public static bool SearchAvoidedByNPCs(int x, int y) { return(WorldGen.InWorld(x, y, 1) && Main.tile[x, y] != null && (!Main.tile[x, y].active() || !TileID.Sets.AvoidedByNPCs[(int)Main.tile[x, y].type])); }
public void DrawFreshAnimations(SpriteBatch spriteBatch) { for (int index = 0; index < this.data.Length; ++index) { ++this.data[index].animationTimeElapsed; } if (!Main.SettingsEnabled_MinersWobble) { return; } int num1 = 1; Vector2 vector2_1 = new Vector2((float)Main.offScreenRange); if (Main.drawToScreen) { vector2_1 = Vector2.Zero; } vector2_1 = Vector2.Zero; for (int index = 0; index < this.data.Length; ++index) { if (this.data[index].type == num1) { int damage = this.data[index].damage; if (damage >= 20) { int x = this.data[index].X; int y = this.data[index].Y; if (WorldGen.InWorld(x, y, 0)) { bool flag1 = Main.tile[x, y] != null; if (flag1 && num1 == 1) { flag1 = flag1 && Main.tile[x, y].active() && Main.tileSolid[(int)Main.tile[x, y].type]; } if (flag1 && num1 == 2) { flag1 = flag1 && Main.tile[x, y].wall > (ushort)0; } if (flag1) { bool flag2 = false; bool flag3 = false; if (Main.tile[x, y].type == (ushort)10) { flag2 = false; } else if (Main.tileSolid[(int)Main.tile[x, y].type] && !Main.tileSolidTop[(int)Main.tile[x, y].type]) { flag2 = true; } else if (WorldGen.IsTreeType((int)Main.tile[x, y].type)) { flag3 = true; int num2 = (int)Main.tile[x, y].frameX / 22; int num3 = (int)Main.tile[x, y].frameY / 22; if (num3 < 9) { flag2 = (num2 != 1 && num2 != 2 || (num3 < 6 || num3 > 8)) && ((num2 != 3 || num3 > 2) && ((num2 != 4 || num3 < 3 || num3 > 5) && (num2 != 5 || num3 < 6 || num3 > 8))); } } else if (Main.tile[x, y].type == (ushort)72) { flag3 = true; if (Main.tile[x, y].frameX <= (short)34) { flag2 = true; } } if (flag2 && Main.tile[x, y].slope() == (byte)0 && !Main.tile[x, y].halfBrick()) { int num2 = 0; if (damage >= 80) { num2 = 3; } else if (damage >= 60) { num2 = 2; } else if (damage >= 40) { num2 = 1; } else if (damage >= 20) { num2 = 0; } Rectangle rectangle = new Rectangle(this.data[index].crackStyle * 18, num2 * 18, 16, 16); rectangle.Inflate(-2, -2); if (flag3) { rectangle.X = (4 + this.data[index].crackStyle / 2) * 18; } int animationTimeElapsed = this.data[index].animationTimeElapsed; if ((double)animationTimeElapsed < 10.0) { double num3 = (double)animationTimeElapsed / 10.0; Color color1 = Lighting.GetColor(x, y); float rotation = 0.0f; Vector2 zero = Vector2.Zero; float num4 = 0.5f; float num5 = (float)num3 % num4 * (1f / num4); if ((int)(num3 / (double)num4) % 2 == 1) { num5 = 1f - num5; } Tile tileSafely = Framing.GetTileSafely(x, y); Tile tile = tileSafely; Texture2D requestIfNotReady = Main.instance.TilePaintSystem.TryGetTileAndRequestIfNotReady((int)tileSafely.type, 0, (int)tileSafely.color()); if (requestIfNotReady != null) { Vector2 origin = new Vector2(8f); Vector2 vector2_2 = new Vector2(1f); double num6 = (double)num5 * 0.200000002980232 + 1.0; float num7 = 1f - num5; float num8 = 1f; Color color2 = color1 * (float)((double)num8 * (double)num8 * 0.800000011920929); Vector2 vector2_3 = vector2_2; Vector2 scale = (float)num6 * vector2_3; Vector2 position = (new Vector2((float)(x * 16 - (int)Main.screenPosition.X), (float)(y * 16 - (int)Main.screenPosition.Y)) + vector2_1 + origin + zero).Floor(); spriteBatch.Draw(requestIfNotReady, position, new Rectangle?(new Rectangle((int)tile.frameX, (int)tile.frameY, 16, 16)), color2, rotation, origin, scale, SpriteEffects.None, 0.0f); color2.A = (byte)180; spriteBatch.Draw(TextureAssets.TileCrack.Value, position, new Rectangle?(rectangle), color2, rotation, origin, scale, SpriteEffects.None, 0.0f); } } } } } } } } }
public void Update() { if (Main.netMode == 2 || !this.active) { return; } bool flag = this.type >= 1024 && this.type <= 1026; if (this.type >= 276 && this.type <= 282) { this.velocity.X *= 0.98f; this.velocity.Y *= 0.98f; if ((double)this.velocity.Y < (double)this.scale) { this.velocity.Y += 0.05f; } if ((double)this.velocity.Y > 0.1) { this.rotation = (double)this.velocity.X <= 0.0 ? this.rotation - 0.01f : this.rotation + 0.01f; } } if (this.type >= 570 && this.type <= 572) { this.scale = this.scale - 1f / 1000f; if ((double)this.scale <= 0.01) { this.scale = 0.01f; Gore.goreTime = 0; } this.sticky = false; this.rotation = this.velocity.X * 0.1f; } else if (this.type >= 706 && this.type <= 717 || this.type == 943) { this.alpha = (double)this.position.Y >= Main.worldSurface * 16.0 + 8.0 ? 100 : 0; int num1 = 4; this.frameCounter = (byte)((uint)this.frameCounter + 1U); if ((int)this.frame <= 4) { int x = (int)((double)this.position.X / 16.0); int y = (int)((double)this.position.Y / 16.0) - 1; if (WorldGen.InWorld(x, y, 0) && !Main.tile[x, y].active()) { this.active = false; } if ((int)this.frame == 0) { num1 = 24 + Main.rand.Next(256); } if ((int)this.frame == 1) { num1 = 24 + Main.rand.Next(256); } if ((int)this.frame == 2) { num1 = 24 + Main.rand.Next(256); } if ((int)this.frame == 3) { num1 = 24 + Main.rand.Next(96); } if ((int)this.frame == 5) { num1 = 16 + Main.rand.Next(64); } if (this.type == 716) { num1 *= 2; } if (this.type == 717) { num1 *= 4; } if (this.type == 943 && (int)this.frame < 6) { num1 = 4; } if ((int)this.frameCounter >= num1) { this.frameCounter = (byte)0; this.frame = (byte)((uint)this.frame + 1U); if ((int)this.frame == 5) { int index = Gore.NewGore(this.position, this.velocity, this.type, 1f); Main.gore[index].frame = (byte)9; Main.gore[index].velocity *= 0.0f; } if (this.type == 943 && (int)this.frame > 4) { if (Main.rand.Next(2) == 0) { Gore gore = Main.gore[Gore.NewGore(this.position, this.velocity, this.type, this.scale)]; int num2 = 0; gore.frameCounter = (byte)num2; int num3 = 7; gore.frame = (byte)num3; Vector2 vector2 = Vector2.UnitY * 1f; gore.velocity = vector2; } if (Main.rand.Next(2) == 0) { Gore gore = Main.gore[Gore.NewGore(this.position, this.velocity, this.type, this.scale)]; int num2 = 0; gore.frameCounter = (byte)num2; int num3 = 7; gore.frame = (byte)num3; Vector2 vector2 = Vector2.UnitY * 2f; gore.velocity = vector2; } } } } else if ((int)this.frame <= 6) { int num2 = 8; if (this.type == 716) { num2 *= 2; } if (this.type == 717) { num2 *= 3; } if ((int)this.frameCounter >= num2) { this.frameCounter = (byte)0; this.frame = (byte)((uint)this.frame + 1U); if ((int)this.frame == 7) { this.active = false; } } } else if ((int)this.frame <= 9) { int num2 = 6; if (this.type == 716) { num2 = (int)((double)num2 * 1.5); this.velocity.Y += 0.175f; } else if (this.type == 717) { num2 *= 2; this.velocity.Y += 0.15f; } else if (this.type == 943) { num2 = (int)((double)num2 * 1.5); this.velocity.Y += 0.2f; } else { this.velocity.Y += 0.2f; } if ((double)this.velocity.Y < 0.5) { this.velocity.Y = 0.5f; } if ((double)this.velocity.Y > 12.0) { this.velocity.Y = 12f; } if ((int)this.frameCounter >= num2) { this.frameCounter = (byte)0; this.frame = (byte)((uint)this.frame + 1U); } if ((int)this.frame > 9) { this.frame = (byte)7; } } else { if (this.type == 716) { num1 *= 2; } else if (this.type == 717) { num1 *= 6; } this.velocity.Y += 0.1f; if ((int)this.frameCounter >= num1) { this.frameCounter = (byte)0; this.frame = (byte)((uint)this.frame + 1U); } this.velocity = this.velocity * 0.0f; if ((int)this.frame > 14) { this.active = false; } } } else if (this.type == 11 || this.type == 12 || (this.type == 13 || this.type == 61) || (this.type == 62 || this.type == 63 || (this.type == 99 || this.type == 220)) || (this.type == 221 || this.type == 222 || this.type >= 375 && this.type <= 377 || (this.type >= 435 && this.type <= 437 || this.type >= 861 && this.type <= 862))) { this.velocity.Y *= 0.98f; this.velocity.X *= 0.98f; this.scale = this.scale - 0.007f; if ((double)this.scale < 0.1) { this.scale = 0.1f; this.alpha = (int)byte.MaxValue; } } else if (this.type == 16 || this.type == 17) { this.velocity.Y *= 0.98f; this.velocity.X *= 0.98f; this.scale = this.scale - 0.01f; if ((double)this.scale < 0.1) { this.scale = 0.1f; this.alpha = (int)byte.MaxValue; } } else if (this.type == 331) { this.alpha = this.alpha + 5; this.velocity.Y *= 0.95f; this.velocity.X *= 0.95f; this.rotation = this.velocity.X * 0.1f; } else if (GoreID.Sets.SpecialAI[this.type] == 3) { byte num1 = (byte)((uint)this.frameCounter + 1U); this.frameCounter = num1; if ((int)num1 >= 8 && (double)this.velocity.Y > 0.200000002980232) { this.frameCounter = (byte)0; int num2 = (int)this.frame / 4; byte num3 = (byte)((uint)this.frame + 1U); this.frame = num3; if ((int)num3 >= 4 + num2 * 4) { this.frame = (byte)(num2 * 4); } } } else if (GoreID.Sets.SpecialAI[this.type] != 1 && GoreID.Sets.SpecialAI[this.type] != 2) { if (this.type >= 907 && this.type <= 909) { this.rotation = 0.0f; this.velocity.X *= 0.98f; if ((double)this.velocity.Y > 0.0 && (double)this.velocity.Y < 1.0 / 1000.0) { this.velocity.Y = (float)((double)Main.rand.NextFloat() * -3.0 - 0.5); } if ((double)this.velocity.Y > -1.0) { this.velocity.Y -= 0.1f; } if ((double)this.scale < 1.0) { this.scale = this.scale + 0.1f; } byte num1 = (byte)((uint)this.frameCounter + 1U); this.frameCounter = num1; if ((int)num1 >= 8) { this.frameCounter = (byte)0; byte num2 = (byte)((uint)this.frame + 1U); this.frame = num2; if ((int)num2 >= 3) { this.frame = (byte)0; } } } else if (this.type < 411 || this.type > 430) { this.velocity.Y += 0.2f; } } this.rotation = this.rotation + this.velocity.X * 0.1f; if (this.type >= 580 && this.type <= 582) { this.rotation = 0.0f; this.velocity.X *= 0.95f; } if (GoreID.Sets.SpecialAI[this.type] == 2) { if (this.timeLeft < 60) { this.alpha = this.alpha + Main.rand.Next(1, 7); } else if (this.alpha > 100) { this.alpha = this.alpha - Main.rand.Next(1, 4); } if (this.alpha < 0) { this.alpha = 0; } if (this.alpha > (int)byte.MaxValue) { this.timeLeft = 0; } this.velocity.X = (float)(((double)this.velocity.X * 50.0 + (double)Main.windSpeed * 2.0 + (double)Main.rand.Next(-10, 11) * 0.100000001490116) / 51.0); float num1 = 0.0f; if ((double)this.velocity.X < 0.0) { num1 = this.velocity.X * 0.2f; } this.velocity.Y = (float)(((double)this.velocity.Y * 50.0 - 0.349999994039536 + (double)num1 + (double)Main.rand.Next(-10, 11) * 0.200000002980232) / 51.0); this.rotation = this.velocity.X * 0.6f; float num2 = -1f; if (Main.goreLoaded[this.type]) { Rectangle rectangle1 = new Rectangle((int)this.position.X, (int)this.position.Y, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale)); for (int index = 0; index < (int)byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead) { Rectangle rectangle2 = new Rectangle((int)Main.player[index].position.X, (int)Main.player[index].position.Y, Main.player[index].width, Main.player[index].height); if (rectangle1.Intersects(rectangle2)) { this.timeLeft = 0; num2 = Main.player[index].velocity.Length(); break; } } } } if (this.timeLeft > 0) { if (Main.rand.Next(2) == 0) { this.timeLeft = this.timeLeft - 1; } if (Main.rand.Next(50) == 0) { this.timeLeft = this.timeLeft - 5; } if (Main.rand.Next(100) == 0) { this.timeLeft = this.timeLeft - 10; } } else { this.alpha = (int)byte.MaxValue; if (Main.goreLoaded[this.type] && (double)num2 != -1.0) { float num3 = (float)((double)Main.goreTexture[this.type].Width * (double)this.scale * 0.800000011920929); float x = this.position.X; float y = this.position.Y; float num4 = (float)Main.goreTexture[this.type].Width * this.scale; float num5 = (float)Main.goreTexture[this.type].Height * this.scale; int Type = 31; for (int index1 = 0; (double)index1 < (double)num3; ++index1) { int index2 = Dust.NewDust(new Vector2(x, y), (int)num4, (int)num5, Type, 0.0f, 0.0f, 0, new Color(), 1f); Main.dust[index2].velocity *= (float)((1.0 + (double)num2) / 3.0); Main.dust[index2].noGravity = true; Main.dust[index2].alpha = 100; Main.dust[index2].scale = this.scale; } } } } if (this.type >= 411 && this.type <= 430) { this.alpha = 50; this.velocity.X = (float)(((double)this.velocity.X * 50.0 + (double)Main.windSpeed * 2.0 + (double)Main.rand.Next(-10, 11) * 0.100000001490116) / 51.0); this.velocity.Y = (float)(((double)this.velocity.Y * 50.0 - 0.25 + (double)Main.rand.Next(-10, 11) * 0.200000002980232) / 51.0); this.rotation = this.velocity.X * 0.3f; if (Main.goreLoaded[this.type]) { Rectangle rectangle1 = new Rectangle((int)this.position.X, (int)this.position.Y, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale)); for (int index = 0; index < (int)byte.MaxValue; ++index) { if (Main.player[index].active && !Main.player[index].dead) { Rectangle rectangle2 = new Rectangle((int)Main.player[index].position.X, (int)Main.player[index].position.Y, Main.player[index].width, Main.player[index].height); if (rectangle1.Intersects(rectangle2)) { this.timeLeft = 0; } } } if (Collision.SolidCollision(this.position, (int)((double)Main.goreTexture[this.type].Width * (double)this.scale), (int)((double)Main.goreTexture[this.type].Height * (double)this.scale))) { this.timeLeft = 0; } } if (this.timeLeft > 0) { if (Main.rand.Next(2) == 0) { this.timeLeft = this.timeLeft - 1; } if (Main.rand.Next(50) == 0) { this.timeLeft = this.timeLeft - 5; } if (Main.rand.Next(100) == 0) { this.timeLeft = this.timeLeft - 10; } } else { this.alpha = (int)byte.MaxValue; if (Main.goreLoaded[this.type]) { float num1 = (float)((double)Main.goreTexture[this.type].Width * (double)this.scale * 0.800000011920929); float x = this.position.X; float y = this.position.Y; float num2 = (float)Main.goreTexture[this.type].Width * this.scale; float num3 = (float)Main.goreTexture[this.type].Height * this.scale; int Type = 176; if (this.type >= 416 && this.type <= 420) { Type = 177; } if (this.type >= 421 && this.type <= 425) { Type = 178; } if (this.type >= 426 && this.type <= 430) { Type = 179; } for (int index1 = 0; (double)index1 < (double)num1; ++index1) { int index2 = Dust.NewDust(new Vector2(x, y), (int)num2, (int)num3, Type, 0.0f, 0.0f, 0, new Color(), 1f); Main.dust[index2].noGravity = true; Main.dust[index2].alpha = 100; Main.dust[index2].scale = this.scale; } } } } else if (GoreID.Sets.SpecialAI[this.type] != 3 && GoreID.Sets.SpecialAI[this.type] != 1) { if (this.type >= 706 && this.type <= 717 || this.type == 943) { if (this.type == 716) { float num1 = 0.6f; float num2 = (int)this.frame != 0 ? ((int)this.frame != 1 ? ((int)this.frame != 2 ? ((int)this.frame != 3 ? ((int)this.frame != 4 ? ((int)this.frame != 5 ? ((int)this.frame != 6 ? ((int)this.frame > 9 ? ((int)this.frame != 10 ? ((int)this.frame != 11 ? ((int)this.frame != 12 ? ((int)this.frame != 13 ? ((int)this.frame != 14 ? 0.0f : num1 * 0.1f) : num1 * 0.2f) : num1 * 0.3f) : num1 * 0.4f) : num1 * 0.5f) : num1 * 0.5f) : num1 * 0.2f) : num1 * 0.4f) : num1 * 0.5f) : num1 * 0.4f) : num1 * 0.3f) : num1 * 0.2f) : num1 * 0.1f; Lighting.AddLight(this.position + new Vector2(8f, 8f), 1f * num2, 0.5f * num2, 0.1f * num2); } Vector2 velocity = this.velocity; this.velocity = Collision.TileCollision(this.position, this.velocity, 16, 14, false, false, 1); if (this.velocity != velocity) { if ((int)this.frame < 10) { this.frame = (byte)10; this.frameCounter = (byte)0; if (this.type != 716 && this.type != 717 && this.type != 943) { Main.PlaySound(39, (int)this.position.X + 8, (int)this.position.Y + 8, Main.rand.Next(2), 1f, 0.0f); } } } else if (Collision.WetCollision(this.position + this.velocity, 16, 14)) { if ((int)this.frame < 10) { this.frame = (byte)10; this.frameCounter = (byte)0; if (this.type != 716 && this.type != 717 && this.type != 943) { Main.PlaySound(39, (int)this.position.X + 8, (int)this.position.Y + 8, 2, 1f, 0.0f); } ((WaterShaderData)Filters.Scene["WaterDistortion"].GetShader()).QueueRipple(this.position + new Vector2(8f, 8f), 1f, RippleShape.Square, 0.0f); } int index1 = (int)((double)this.position.X + 8.0) / 16; int index2 = (int)((double)this.position.Y + 14.0) / 16; if (Main.tile[index1, index2] != null && (int)Main.tile[index1, index2].liquid > 0) { this.velocity = this.velocity * 0.0f; this.position.Y = (float)(index2 * 16 - (int)Main.tile[index1, index2].liquid / 16); } } } else if (this.sticky) { int num1 = 32; if (Main.goreLoaded[this.type]) { num1 = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num1) { num1 = Main.goreTexture[this.type].Height; } } if (flag) { num1 = 4; } int num2 = (int)((double)num1 * 0.899999976158142); Vector2 velocity = this.velocity; this.velocity = Collision.TileCollision(this.position, this.velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1); if ((double)this.velocity.Y == 0.0) { if (flag) { this.velocity.X *= 0.94f; } else { this.velocity.X *= 0.97f; } if ((double)this.velocity.X > -0.01 && (double)this.velocity.X < 0.01) { this.velocity.X = 0.0f; } } if (this.timeLeft > 0) { this.timeLeft = this.timeLeft - GoreID.Sets.DisappearSpeed[this.type]; } else { this.alpha = this.alpha + GoreID.Sets.DisappearSpeedAlpha[this.type]; } } else { this.alpha = this.alpha + 2 * GoreID.Sets.DisappearSpeedAlpha[this.type]; } } if (this.type >= 907 && this.type <= 909) { int num1 = 32; if (Main.goreLoaded[this.type]) { num1 = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num1) { num1 = Main.goreTexture[this.type].Height; } } int num2 = (int)((double)num1 * 0.899999976158142); Vector4 vector4 = Collision.SlopeCollision(this.position, this.velocity, num2, num2, 0.0f, true); this.position.X = vector4.X; this.position.Y = vector4.Y; this.velocity.X = vector4.Z; this.velocity.Y = vector4.W; } if (GoreID.Sets.SpecialAI[this.type] == 1) { if ((double)this.velocity.Y < 0.0) { Vector2 Velocity = new Vector2(this.velocity.X, 0.6f); int num1 = 32; if (Main.goreLoaded[this.type]) { num1 = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num1) { num1 = Main.goreTexture[this.type].Height; } } int num2 = (int)((double)num1 * 0.899999976158142); Vector2 vector2 = Collision.TileCollision(this.position, Velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1); vector2.X *= 0.97f; if ((double)vector2.X > -0.01 && (double)vector2.X < 0.01) { vector2.X = 0.0f; } if (this.timeLeft > 0) { this.timeLeft = this.timeLeft - 1; } else { this.alpha = this.alpha + 1; } this.velocity.X = vector2.X; } else { this.velocity.Y += (float)Math.PI / 60f; Vector2 Velocity = new Vector2(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).X * 2f, Math.Abs(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).Y) * 3f) * 2f; int num = 32; if (Main.goreLoaded[this.type]) { num = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num) { num = Main.goreTexture[this.type].Height; } } Vector2 vector2 = Velocity; Vector2 v = Collision.TileCollision(this.position, Velocity, (int)((double)num * (double)this.scale), (int)((double)num * (double)this.scale), false, false, 1); if (v != vector2) { this.velocity.Y = -1f; } this.position = this.position + v; this.rotation = v.ToRotation() + 3.141593f; if (this.timeLeft > 0) { this.timeLeft = this.timeLeft - 1; } else { this.alpha = this.alpha + 1; } } } else if (GoreID.Sets.SpecialAI[this.type] == 3) { if ((double)this.velocity.Y < 0.0) { Vector2 Velocity = new Vector2(this.velocity.X, -0.2f); int num1 = 8; if (Main.goreLoaded[this.type]) { num1 = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num1) { num1 = Main.goreTexture[this.type].Height; } } int num2 = (int)((double)num1 * 0.899999976158142); Vector2 vector2 = Collision.TileCollision(this.position, Velocity, (int)((double)num2 * (double)this.scale), (int)((double)num2 * (double)this.scale), false, false, 1); vector2.X *= 0.94f; if ((double)vector2.X > -0.01 && (double)vector2.X < 0.01) { vector2.X = 0.0f; } if (this.timeLeft > 0) { this.timeLeft = this.timeLeft - GoreID.Sets.DisappearSpeed[this.type]; } else { this.alpha = this.alpha + GoreID.Sets.DisappearSpeedAlpha[this.type]; } this.velocity.X = vector2.X; } else { this.velocity.Y += (float)Math.PI / 180f; Vector2 Velocity = new Vector2(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).X * 1f, Math.Abs(Vector2.UnitY.RotatedBy((double)this.velocity.Y, new Vector2()).Y) * 1f); int num = 8; if (Main.goreLoaded[this.type]) { num = Main.goreTexture[this.type].Width; if (Main.goreTexture[this.type].Height < num) { num = Main.goreTexture[this.type].Height; } } Vector2 vector2 = Velocity; Vector2 v = Collision.TileCollision(this.position, Velocity, (int)((double)num * (double)this.scale), (int)((double)num * (double)this.scale), false, false, 1); if (v != vector2) { this.velocity.Y = -1f; } this.position = this.position + v; this.rotation = v.ToRotation() + 1.570796f; if (this.timeLeft > 0) { this.timeLeft = this.timeLeft - GoreID.Sets.DisappearSpeed[this.type]; } else { this.alpha = this.alpha + GoreID.Sets.DisappearSpeedAlpha[this.type]; } } } else { this.position = this.position + this.velocity; } if (this.alpha >= (int)byte.MaxValue) { this.active = false; } if ((double)this.light <= 0.0) { return; } float R = this.light * this.scale; float G = this.light * this.scale; float B = this.light * this.scale; if (this.type == 16) { B *= 0.3f; G *= 0.8f; } else if (this.type == 17) { G *= 0.6f; R *= 0.3f; } if (Main.goreLoaded[this.type]) { Lighting.AddLight((int)(((double)this.position.X + (double)Main.goreTexture[this.type].Width * (double)this.scale / 2.0) / 16.0), (int)(((double)this.position.Y + (double)Main.goreTexture[this.type].Height * (double)this.scale / 2.0) / 16.0), R, G, B); } else { Lighting.AddLight((int)(((double)this.position.X + 32.0 * (double)this.scale / 2.0) / 16.0), (int)(((double)this.position.Y + 32.0 * (double)this.scale / 2.0) / 16.0), R, G, B); } }
public void DrawFreshAnimations(SpriteBatch spriteBatch) { for (int index = 0; index < this.data.Length; ++index) { ++this.data[index].animationTimeElapsed; } if (!Main.SettingsEnabled_MinersWobble) { return; } int num1 = 1; Vector2 zero1; // ISSUE: explicit reference operation ((Vector2)@zero1).\u002Ector((float)Main.offScreenRange); if (Main.drawToScreen) { zero1 = Vector2.get_Zero(); } zero1 = Vector2.get_Zero(); for (int index = 0; index < this.data.Length; ++index) { if (this.data[index].type == num1) { int damage = this.data[index].damage; if (damage >= 20) { int x = this.data[index].X; int y = this.data[index].Y; if (WorldGen.InWorld(x, y, 0)) { bool flag1 = Main.tile[x, y] != null; if (flag1 && num1 == 1) { flag1 = flag1 && Main.tile[x, y].active() && Main.tileSolid[(int)Main.tile[x, y].type]; } if (flag1 && num1 == 2) { flag1 = flag1 && (uint)Main.tile[x, y].wall > 0U; } if (flag1) { bool flag2 = false; bool flag3 = false; if ((int)Main.tile[x, y].type == 10) { flag2 = false; } else if (Main.tileSolid[(int)Main.tile[x, y].type] && !Main.tileSolidTop[(int)Main.tile[x, y].type]) { flag2 = true; } else if ((int)Main.tile[x, y].type == 5) { flag3 = true; int num2 = (int)Main.tile[x, y].frameX / 22; int num3 = (int)Main.tile[x, y].frameY / 22; if (num3 < 9) { flag2 = (num2 != 1 && num2 != 2 || (num3 < 6 || num3 > 8)) && ((num2 != 3 || num3 > 2) && ((num2 != 4 || num3 < 3 || num3 > 5) && (num2 != 5 || num3 < 6 || num3 > 8))); } } else if ((int)Main.tile[x, y].type == 72) { flag3 = true; if ((int)Main.tile[x, y].frameX <= 34) { flag2 = true; } } if (flag2 && (int)Main.tile[x, y].slope() == 0 && !Main.tile[x, y].halfBrick()) { int num2 = 0; if (damage >= 80) { num2 = 3; } else if (damage >= 60) { num2 = 2; } else if (damage >= 40) { num2 = 1; } else if (damage >= 20) { num2 = 0; } Rectangle rectangle; // ISSUE: explicit reference operation ((Rectangle)@rectangle).\u002Ector(this.data[index].crackStyle * 18, num2 * 18, 16, 16); // ISSUE: explicit reference operation ((Rectangle)@rectangle).Inflate(-2, -2); if (flag3) { rectangle.X = (__Null)((4 + this.data[index].crackStyle / 2) * 18); } int animationTimeElapsed = this.data[index].animationTimeElapsed; if ((double)animationTimeElapsed < 10.0) { double num3 = (double)animationTimeElapsed / 10.0; Color color1 = Lighting.GetColor(x, y); float num4 = 0.0f; Vector2 zero2 = Vector2.get_Zero(); float num5 = 0.5f; double num6 = (double)num5; float num7 = (float)(num3 % num6) * (1f / num5); double num8 = (double)num5; if ((int)(num3 / num8) % 2 == 1) { num7 = 1f - num7; } Tile tileSafely = Framing.GetTileSafely(x, y); Tile tile = tileSafely; Texture2D texture2D = !Main.canDrawColorTile(tileSafely.type, (int)tileSafely.color()) ? Main.tileTexture[(int)tileSafely.type] : (Texture2D)Main.tileAltTexture[(int)tileSafely.type, (int)tileSafely.color()]; Vector2 vector2_1; // ISSUE: explicit reference operation ((Vector2)@vector2_1).\u002Ector(8f); Vector2 vector2_2; // ISSUE: explicit reference operation ((Vector2)@vector2_2).\u002Ector(1f); double num9 = (double)num7 * 0.200000002980232 + 1.0; float num10 = 1f - num7; float num11 = 1f; Color color2 = Color.op_Multiply(color1, (float)((double)num11 * (double)num11 * 0.800000011920929)); Vector2 vector2_3 = vector2_2; Vector2 vector2_4 = Vector2.op_Multiply((float)num9, vector2_3); Vector2 vector2_5 = Vector2.op_Addition(Vector2.op_Addition(Vector2.op_Addition(new Vector2((float)(x * 16 - (int)Main.screenPosition.X), (float)(y * 16 - (int)Main.screenPosition.Y)), zero1), vector2_1), zero2).Floor(); spriteBatch.Draw(texture2D, vector2_5, new Rectangle?(new Rectangle((int)tile.frameX, (int)tile.frameY, 16, 16)), color2, num4, vector2_1, vector2_4, (SpriteEffects)0, 0.0f); // ISSUE: explicit reference operation ((Color)@color2).set_A((byte)180); spriteBatch.Draw(Main.tileCrackTexture, vector2_5, new Rectangle?(rectangle), color2, num4, vector2_1, vector2_4, (SpriteEffects)0, 0.0f); } } } } } } } }
public void DrawFreshAnimations(SpriteBatch spriteBatch) { for (int index = 0; index < this.data.Length; ++index) { ++this.data[index].animationTimeElapsed; } if (!Main.SettingsEnabled_MinersWobble) { return; } int num1 = 1; Vector2 vector2_1 = new Vector2((float)Main.offScreenRange); if (Main.drawToScreen) { vector2_1 = Vector2.Zero; } vector2_1 = Vector2.Zero; for (int index = 0; index < this.data.Length; ++index) { if (this.data[index].type == num1) { int damage = this.data[index].damage; if (damage >= 20) { int x = this.data[index].X; int y = this.data[index].Y; if (WorldGen.InWorld(x, y, 0)) { bool flag1; if ((flag1 = Main.tile[x, y] != null) && num1 == 1) { flag1 = flag1 && Main.tile[x, y].active() && Main.tileSolid[(int)Main.tile[x, y].type]; } if (flag1 && num1 == 2) { flag1 = flag1 && (int)Main.tile[x, y].wall != 0; } if (flag1) { bool flag2 = false; bool flag3 = false; if ((int)Main.tile[x, y].type == 10) { flag2 = false; } else if (Main.tileSolid[(int)Main.tile[x, y].type] && !Main.tileSolidTop[(int)Main.tile[x, y].type]) { flag2 = true; } else if ((int)Main.tile[x, y].type == 5) { flag3 = true; int num2 = (int)Main.tile[x, y].frameX / 22; int num3 = (int)Main.tile[x, y].frameY / 22; if (num3 < 9) { flag2 = (num2 != 1 && num2 != 2 || (num3 < 6 || num3 > 8)) && ((num2 != 3 || num3 > 2) && ((num2 != 4 || num3 < 3 || num3 > 5) && (num2 != 5 || num3 < 6 || num3 > 8))); } } else if ((int)Main.tile[x, y].type == 72) { flag3 = true; if ((int)Main.tile[x, y].frameX <= 34) { flag2 = true; } } if (flag2 && (int)Main.tile[x, y].slope() == 0 && !Main.tile[x, y].halfBrick()) { int num2 = 0; if (damage >= 80) { num2 = 3; } else if (damage >= 60) { num2 = 2; } else if (damage >= 40) { num2 = 1; } else if (damage >= 20) { num2 = 0; } Rectangle rectangle = new Rectangle(this.data[index].crackStyle * 18, num2 * 18, 16, 16); rectangle.Inflate(-2, -2); if (flag3) { rectangle.X = (4 + this.data[index].crackStyle / 2) * 18; } int animationTimeElapsed = this.data[index].animationTimeElapsed; if ((double)animationTimeElapsed < 10.0) { float num3 = (float)animationTimeElapsed / 10f; float num4 = 1f; Color color1 = Lighting.GetColor(x, y); float rotation = 0.0f; Vector2 zero = Vector2.Zero; float num5 = num3; float num6 = 0.5f; float num7 = num5 % num6 * 2f; if ((int)((double)num5 / (double)num6) % 2 == 1) { num7 = 1f - num7; } num4 = (float)((double)num7 * 0.449999988079071 + 1.0); Tile tileSafely = Framing.GetTileSafely(x, y); Tile tile = tileSafely; Texture2D texture = !Main.canDrawColorTile(tileSafely.type, (int)tileSafely.color()) ? Main.tileTexture[(int)tileSafely.type] : (Texture2D)Main.tileAltTexture[(int)tileSafely.type, (int)tileSafely.color()]; Vector2 origin = new Vector2(8f); Vector2 vector2_2 = new Vector2(1f); float num8 = (float)((double)num7 * 0.200000002980232 + 1.0); Color color2 = color1 * 0.8f; Vector2 scale = num8 * vector2_2; Vector2 position = (new Vector2((float)(x * 16 - (int)Main.screenPosition.X), (float)(y * 16 - (int)Main.screenPosition.Y)) + vector2_1 + origin + zero).Floor(); spriteBatch.Draw(texture, position, new Rectangle?(new Rectangle((int)tile.frameX, (int)tile.frameY, 16, 16)), color2, rotation, origin, scale, SpriteEffects.None, 0.0f); color2.A = (byte)180; spriteBatch.Draw(Main.tileCrackTexture, position, new Rectangle?(rectangle), color2, rotation, origin, scale, SpriteEffects.None, 0.0f); } } } } } } } }
public void DrawFreshAnimations(SpriteBatch spriteBatch) { for (int i = 0; i < data.Length; i++) { data[i].animationTimeElapsed++; } if (!Main.SettingsEnabled_MinersWobble) { return; } int num = 1; Vector2 vector = new Vector2(Main.offScreenRange); if (Main.drawToScreen) { vector = Vector2.Zero; } vector = Vector2.Zero; for (int j = 0; j < data.Length; j++) { if (data[j].type != num) { continue; } int damage = data[j].damage; if (damage < 20) { continue; } int x = data[j].X; int y = data[j].Y; if (!WorldGen.InWorld(x, y)) { continue; } bool flag = Main.tile[x, y] != null; if (flag && num == 1) { flag = flag && Main.tile[x, y].active() && Main.tileSolid[Main.tile[x, y].type]; } if (flag && num == 2) { flag = flag && Main.tile[x, y].wall != 0; } if (!flag) { continue; } bool flag2 = false; bool flag3 = false; if (Main.tile[x, y].type == 10) { flag2 = false; } else if (Main.tileSolid[Main.tile[x, y].type] && !Main.tileSolidTop[Main.tile[x, y].type]) { flag2 = true; } else if (WorldGen.IsTreeType(Main.tile[x, y].type)) { flag3 = true; int num2 = Main.tile[x, y].frameX / 22; int num3 = Main.tile[x, y].frameY / 22; if (num3 < 9) { flag2 = ((num2 != 1 && num2 != 2) || num3 < 6 || num3 > 8) && (num2 != 3 || num3 > 2) && (num2 != 4 || num3 < 3 || num3 > 5) && ((num2 != 5 || num3 < 6 || num3 > 8) ? true : false); } } else if (Main.tile[x, y].type == 72) { flag3 = true; if (Main.tile[x, y].frameX <= 34) { flag2 = true; } } if (!flag2 || Main.tile[x, y].slope() != 0 || Main.tile[x, y].halfBrick()) { continue; } int num4 = 0; if (damage >= 80) { num4 = 3; } else if (damage >= 60) { num4 = 2; } else if (damage >= 40) { num4 = 1; } else if (damage >= 20) { num4 = 0; } Rectangle value = new Rectangle(data[j].crackStyle * 18, num4 * 18, 16, 16); value.Inflate(-2, -2); if (flag3) { value.X = (4 + data[j].crackStyle / 2) * 18; } int animationTimeElapsed = data[j].animationTimeElapsed; if (!((float)animationTimeElapsed >= 10f)) { float num5 = (float)animationTimeElapsed / 10f; Color color = Lighting.GetColor(x, y); float rotation = 0f; Vector2 zero = Vector2.Zero; float num6 = 0.5f; float num7 = num5 % num6; num7 *= 1f / num6; if ((int)(num5 / num6) % 2 == 1) { num7 = 1f - num7; } Tile tileSafely = Framing.GetTileSafely(x, y); Tile tile = tileSafely; Texture2D texture2D = Main.instance.TilePaintSystem.TryGetTileAndRequestIfNotReady(tileSafely.type, 0, tileSafely.color()); if (texture2D != null) { Vector2 vector2 = new Vector2(8f); Vector2 value2 = new Vector2(1f); float scaleFactor = num7 * 0.2f + 1f; float num8 = 1f - num7; num8 = 1f; color *= num8 * num8 * 0.8f; Vector2 scale = scaleFactor * value2; Vector2 position = (new Vector2(x * 16 - (int)Main.screenPosition.X, y * 16 - (int)Main.screenPosition.Y) + vector + vector2 + zero); spriteBatch.Draw(texture2D, position, new Rectangle(tile.frameX, tile.frameY, 16, 16), color, rotation, vector2, scale, SpriteEffects.None, 0f); color.A = 180; spriteBatch.Draw(TextureAssets.TileCrack.Value, position, value, color, rotation, vector2, scale, SpriteEffects.None, 0f); } } } }
public void Update() { if (Main.netMode == 2 || !active) { return; } if (type >= 276 && type <= 282) { velocity.X *= 0.98f; velocity.Y *= 0.98f; if (velocity.Y < scale) { velocity.Y += 0.05f; } if ((double)velocity.Y > 0.1) { if (velocity.X > 0f) { rotation += 0.01f; } else { rotation -= 0.01f; } } } if (type >= 570 && type <= 572) { scale -= 0.001f; if ((double)scale <= 0.01) { scale = 0.01f; goreTime = 0; } sticky = false; rotation = velocity.X * 0.1f; } else if (type >= 706 && type <= 717) { if ((double)position.Y < Main.worldSurface * 16.0 + 8.0) { alpha = 0; } else { alpha = 100; } int num = 4; frameCounter++; if (frame <= 4) { int num2 = (int)(position.X / 16f); int num3 = (int)(position.Y / 16f) - 1; if (WorldGen.InWorld(num2, num3) && !Main.tile[num2, num3].active()) { active = false; } if (frame == 0) { num = 24 + Main.rand.Next(256); } if (frame == 1) { num = 24 + Main.rand.Next(256); } if (frame == 2) { num = 24 + Main.rand.Next(256); } if (frame == 3) { num = 24 + Main.rand.Next(96); } if (frame == 5) { num = 16 + Main.rand.Next(64); } if (type == 716) { num *= 2; } if (type == 717) { num *= 4; } if (frameCounter >= num) { frameCounter = 0; frame++; if (frame == 5) { int num4 = NewGore(position, velocity, type); Main.gore[num4].frame = 9; Main.gore[num4].velocity *= 0f; } } } else if (frame <= 6) { num = 8; if (type == 716) { num *= 2; } if (type == 717) { num *= 3; } if (frameCounter >= num) { frameCounter = 0; frame++; if (frame == 7) { active = false; } } } else if (frame <= 9) { num = 6; if (type == 716) { num = (int)((double)num * 1.5); velocity.Y += 0.175f; } else if (type == 717) { num *= 2; velocity.Y += 0.15f; } else { velocity.Y += 0.2f; } if ((double)velocity.Y < 0.5) { velocity.Y = 0.5f; } if (velocity.Y > 12f) { velocity.Y = 12f; } if (frameCounter >= num) { frameCounter = 0; frame++; } if (frame > 9) { frame = 7; } } else { if (type == 716) { num *= 2; } else if (type == 717) { num *= 6; } velocity.Y += 0.1f; if (frameCounter >= num) { frameCounter = 0; frame++; } velocity *= 0f; if (frame > 14) { active = false; } } } else if (type == 11 || type == 12 || type == 13 || type == 61 || type == 62 || type == 63 || type == 99 || type == 220 || type == 221 || type == 222 || (type >= 375 && type <= 377) || (type >= 435 && type <= 437) || (type >= 861 && type <= 862)) { velocity.Y *= 0.98f; velocity.X *= 0.98f; scale -= 0.007f; if ((double)scale < 0.1) { scale = 0.1f; alpha = 255; } } else if (type == 16 || type == 17) { velocity.Y *= 0.98f; velocity.X *= 0.98f; scale -= 0.01f; if ((double)scale < 0.1) { scale = 0.1f; alpha = 255; } } else if (type == 331) { alpha += 5; velocity.Y *= 0.95f; velocity.X *= 0.95f; rotation = velocity.X * 0.1f; } else if (type != 860 && type != 892 && type != 893 && (type < 825 || type > 827) && (type < 411 || type > 430)) { velocity.Y += 0.2f; } rotation += velocity.X * 0.1f; if (type >= 580 && type <= 582) { rotation = 0f; velocity.X *= 0.95f; } if (type >= 825 && type <= 827) { if (timeLeft < 60) { alpha += Main.rand.Next(1, 7); } else if (alpha > 100) { alpha -= Main.rand.Next(1, 4); } if (alpha < 0) { alpha = 0; } if (alpha > 255) { timeLeft = 0; } velocity.X = (velocity.X * 50f + Main.windSpeed * 2f + (float)Main.rand.Next(-10, 11) * 0.1f) / 51f; float num5 = 0f; if (velocity.X < 0f) { num5 = velocity.X * 0.2f; } velocity.Y = (velocity.Y * 50f + -0.35f + num5 + (float)Main.rand.Next(-10, 11) * 0.2f) / 51f; rotation = velocity.X * 0.6f; float num6 = -1f; if (Main.goreLoaded[type]) { Rectangle rectangle = new Rectangle((int)position.X, (int)position.Y, (int)((float)Main.goreTexture[type].Width * scale), (int)((float)Main.goreTexture[type].Height * scale)); for (int i = 0; i < 16; i++) { if (Main.player[i].active && !Main.player[i].dead) { Rectangle value = new Rectangle((int)Main.player[i].position.X, (int)Main.player[i].position.Y, Main.player[i].width, Main.player[i].height); if (rectangle.Intersects(value)) { timeLeft = 0; num6 = Main.player[i].velocity.Length(); break; } } } } if (timeLeft > 0) { if (Main.rand.Next(2) == 0) { timeLeft--; } if (Main.rand.Next(50) == 0) { timeLeft -= 5; } if (Main.rand.Next(100) == 0) { timeLeft -= 10; } } else { alpha = 255; if (Main.goreLoaded[type] && num6 != -1f) { float num7 = (float)Main.goreTexture[type].Width * scale * 0.8f; float x = position.X; float y = position.Y; float num8 = (float)Main.goreTexture[type].Width * scale; float num9 = (float)Main.goreTexture[type].Height * scale; int num10 = 31; for (int j = 0; (float)j < num7; j++) { int num11 = Dust.NewDust(new Vector2(x, y), (int)num8, (int)num9, num10); Main.dust[num11].velocity *= (1f + num6) / 3f; Main.dust[num11].noGravity = true; Main.dust[num11].alpha = 100; Main.dust[num11].scale = scale; } } } } if (type >= 411 && type <= 430) { alpha = 50; velocity.X = (velocity.X * 50f + Main.windSpeed * 2f + (float)Main.rand.Next(-10, 11) * 0.1f) / 51f; velocity.Y = (velocity.Y * 50f + -0.25f + (float)Main.rand.Next(-10, 11) * 0.2f) / 51f; rotation = velocity.X * 0.3f; if (Main.goreLoaded[type]) { Rectangle rectangle2 = new Rectangle((int)position.X, (int)position.Y, (int)((float)Main.goreTexture[type].Width * scale), (int)((float)Main.goreTexture[type].Height * scale)); for (int k = 0; k < 16; k++) { if (Main.player[k].active && !Main.player[k].dead) { Rectangle value2 = new Rectangle((int)Main.player[k].position.X, (int)Main.player[k].position.Y, Main.player[k].width, Main.player[k].height); if (rectangle2.Intersects(value2)) { timeLeft = 0; } } } if (Collision.SolidCollision(position, (int)((float)Main.goreTexture[type].Width * scale), (int)((float)Main.goreTexture[type].Height * scale))) { timeLeft = 0; } } if (timeLeft > 0) { if (Main.rand.Next(2) == 0) { timeLeft--; } if (Main.rand.Next(50) == 0) { timeLeft -= 5; } if (Main.rand.Next(100) == 0) { timeLeft -= 10; } } else { alpha = 255; if (Main.goreLoaded[type]) { float num12 = (float)Main.goreTexture[type].Width * scale * 0.8f; float x2 = position.X; float y2 = position.Y; float num13 = (float)Main.goreTexture[type].Width * scale; float num14 = (float)Main.goreTexture[type].Height * scale; int num15 = 176; if (type >= 416 && type <= 420) { num15 = 177; } if (type >= 421 && type <= 425) { num15 = 178; } if (type >= 426 && type <= 430) { num15 = 179; } for (int l = 0; (float)l < num12; l++) { int num16 = Dust.NewDust(new Vector2(x2, y2), (int)num13, (int)num14, num15); Main.dust[num16].noGravity = true; Main.dust[num16].alpha = 100; Main.dust[num16].scale = scale; } } } } else if (type != 860 && type != 892 && type != 893) { if (type >= 706 && type <= 717) { if (type == 716) { float num17 = 1f; float num18 = 1f; float num19 = 1f; float num20 = 0.6f; num20 = ((frame == 0) ? (num20 * 0.1f) : ((frame == 1) ? (num20 * 0.2f) : ((frame == 2) ? (num20 * 0.3f) : ((frame == 3) ? (num20 * 0.4f) : ((frame == 4) ? (num20 * 0.5f) : ((frame == 5) ? (num20 * 0.4f) : ((frame == 6) ? (num20 * 0.2f) : ((frame <= 9) ? (num20 * 0.5f) : ((frame == 10) ? (num20 * 0.5f) : ((frame == 11) ? (num20 * 0.4f) : ((frame == 12) ? (num20 * 0.3f) : ((frame == 13) ? (num20 * 0.2f) : ((frame != 14) ? 0f : (num20 * 0.1f)))))))))))))); num17 = 1f * num20; num18 = 0.5f * num20; num19 = 0.1f * num20; Lighting.AddLight(position + new Vector2(8f, 8f), num17, num18, num19); } Vector2 value3 = velocity; velocity = Collision.TileCollision(position, velocity, 16, 14); if (velocity != value3) { if (frame < 10) { frame = 10; frameCounter = 0; if (type != 716 && type != 717) { Main.PlaySound(39, (int)position.X + 8, (int)position.Y + 8, Main.rand.Next(2)); } } } else if (Collision.WetCollision(position + velocity, 16, 14)) { if (frame < 10) { frame = 10; frameCounter = 0; if (type != 716 && type != 717) { Main.PlaySound(39, (int)position.X + 8, (int)position.Y + 8, 2); } } int num21 = (int)(position.X + 8f) / 16; int num22 = (int)(position.Y + 14f) / 16; if (Main.tile[num21, num22] != null && Main.tile[num21, num22].liquid > 0) { velocity *= 0f; position.Y = num22 * 16 - (int)Main.tile[num21, num22].liquid / 16; } } } else if (sticky) { int num23 = 32; if (Main.goreLoaded[type]) { num23 = Main.goreTexture[type].Width; if (Main.goreTexture[type].Height < num23) { num23 = Main.goreTexture[type].Height; } } num23 = (int)((float)num23 * 0.9f); velocity = Collision.TileCollision(position, velocity, (int)((float)num23 * scale), (int)((float)num23 * scale)); if (velocity.Y == 0f) { velocity.X *= 0.97f; if ((double)velocity.X > -0.01 && (double)velocity.X < 0.01) { velocity.X = 0f; } } if (timeLeft > 0) { timeLeft--; } else { alpha++; } } else { alpha += 2; } } if (type == 860 || type == 892 || type == 893) { if (velocity.Y < 0f) { Vector2 vector = new Vector2(velocity.X, 0.6f); int num24 = 32; if (Main.goreLoaded[type]) { num24 = Main.goreTexture[type].Width; if (Main.goreTexture[type].Height < num24) { num24 = Main.goreTexture[type].Height; } } num24 = (int)((float)num24 * 0.9f); vector = Collision.TileCollision(position, vector, (int)((float)num24 * scale), (int)((float)num24 * scale)); vector.X *= 0.97f; if ((double)vector.X > -0.01 && (double)vector.X < 0.01) { vector.X = 0f; } if (timeLeft > 0) { timeLeft--; } else { alpha++; } velocity.X = vector.X; } else { velocity.Y += (float)Math.PI / 60f; Vector2 vector2 = new Vector2(Vector2.UnitY.RotatedBy(velocity.Y).X * 2f, Math.Abs(Vector2.UnitY.RotatedBy(velocity.Y).Y) * 3f); vector2 *= 2f; int num25 = 32; if (Main.goreLoaded[type]) { num25 = Main.goreTexture[type].Width; if (Main.goreTexture[type].Height < num25) { num25 = Main.goreTexture[type].Height; } } Vector2 value4 = vector2; vector2 = Collision.TileCollision(position, vector2, (int)((float)num25 * scale), (int)((float)num25 * scale)); if (vector2 != value4) { velocity.Y = -1f; } position += vector2; rotation = vector2.ToRotation() + (float)Math.PI; if (timeLeft > 0) { timeLeft--; } else { alpha++; } } } else { position += velocity; } if (alpha >= 255) { active = false; } if (light > 0f) { float num26 = light * scale; float num27 = light * scale; float num28 = light * scale; if (type == 16) { num28 *= 0.3f; num27 *= 0.8f; } else if (type == 17) { num27 *= 0.6f; num26 *= 0.3f; } if (Main.goreLoaded[type]) { Lighting.AddLight((int)((position.X + (float)Main.goreTexture[type].Width * scale / 2f) / 16f), (int)((position.Y + (float)Main.goreTexture[type].Height * scale / 2f) / 16f), num26, num27, num28); } else { Lighting.AddLight((int)((position.X + 32f * scale / 2f) / 16f), (int)((position.Y + 32f * scale / 2f) / 16f), num26, num27, num28); } } }