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

◆ Collision_MoveSlopesAndStairFall()

void Terraria.NPC.Collision_MoveSlopesAndStairFall ( bool fall)
inlineprivate

Definition at line 89344 of file NPC.cs.

89345 {
89346 if (fall)
89347 {
89348 stairFall = true;
89349 }
89350 if (aiStyle == 7)
89351 {
89352 int num = (int)base.Center.X / 16;
89353 int num2 = (int)position.Y / 16;
89354 if (WorldGen.InWorld(num, num2))
89355 {
89356 int num3 = 16;
89357 bool flag = false;
89358 if (Main.tile[num, num2] != null && Main.tile[num, num2].active() && Main.tileSolid[Main.tile[num, num2].type])
89359 {
89360 flag = true;
89361 }
89362 if (!townNPC)
89363 {
89364 flag = false;
89365 }
89366 if (!Main.dayTime || Main.eclipse)
89367 {
89368 flag = true;
89369 }
89370 else
89371 {
89372 int num4 = (int)(position.Y + (float)height) / 16;
89373 if (homeTileY - num4 > num3)
89374 {
89375 flag = true;
89376 }
89377 }
89378 if (flag)
89379 {
89380 if ((position.Y + (float)height - 8f) / 16f < (float)homeTileY)
89381 {
89382 stairFall = true;
89383 }
89384 else
89385 {
89386 stairFall = false;
89387 }
89388 }
89389 }
89390 }
89393 Vector4 vector2 = Collision.SlopeCollision(cPosition, velocity, cWidth, cHeight, gravity, stairFall);
89394 if (Collision.stairFall)
89395 {
89396 stairFall = true;
89397 }
89398 else if (!fall)
89399 {
89400 stairFall = false;
89401 }
89402 if (Collision.stair && Math.Abs(vector2.Y - position.Y) > 8f)
89403 {
89404 gfxOffY -= vector2.Y - position.Y;
89405 stepSpeed = 2f;
89406 }
89407 position.X = vector2.X;
89408 position.Y = vector2.Y;
89409 velocity.X = vector2.Z;
89410 velocity.Y = vector2.W;
89411 position += vector;
89412 }
static double Abs(double value)
Vector2 velocity
Definition Entity.cs:16
Vector2 position
Definition Entity.cs:14
void GetTileCollisionParameters(out Vector2 cPosition, out int cWidth, out int cHeight)
Definition NPC.cs:89517
float gfxOffY
Definition NPC.cs:125
int aiStyle
Definition NPC.cs:453
static float gravity
Definition NPC.cs:129
float stepSpeed
Definition NPC.cs:127
bool stairFall
Definition NPC.cs:137
bool townNPC
Definition NPC.cs:537
int homeTileY
Definition NPC.cs:545

References System.Math.Abs(), Terraria.Main.dayTime, Terraria.Main.eclipse, Terraria.WorldGen.InWorld(), Terraria.Collision.SlopeCollision(), Terraria.Collision.stair, Terraria.Collision.stairFall, Terraria.Main.tile, and Terraria.Main.tileSolid.