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

◆ CreateImpactExplosion()

void Terraria.Projectile.CreateImpactExplosion ( int dustAmountMultiplier,
Vector2 explosionOrigin,
ref Point scanAreaStart,
ref Point scanAreaEnd,
int explosionRange,
out bool causedShockwaves )
inlineprivate

Definition at line 58576 of file Projectile.cs.

58577 {
58578 causedShockwaves = false;
58579 int num = 4;
58580 for (int i = scanAreaStart.X; i <= scanAreaEnd.X; i++)
58581 {
58582 for (int j = scanAreaStart.Y; j <= scanAreaEnd.Y; j++)
58583 {
58584 if (Vector2.Distance(explosionOrigin, new Vector2(i * 16, j * 16)) > (float)explosionRange)
58585 {
58586 continue;
58587 }
58588 Tile tileSafely = Framing.GetTileSafely(i, j);
58589 if (!tileSafely.active() || !Main.tileSolid[tileSafely.type] || Main.tileSolidTop[tileSafely.type] || Main.tileFrameImportant[tileSafely.type])
58590 {
58591 continue;
58592 }
58593 Tile tileSafely2 = Framing.GetTileSafely(i, j - 1);
58594 if (tileSafely2.active() && Main.tileSolid[tileSafely2.type] && !Main.tileSolidTop[tileSafely2.type])
58595 {
58596 continue;
58597 }
58598 int num2 = WorldGen.KillTile_GetTileDustAmount(fail: true, tileSafely) * dustAmountMultiplier;
58599 for (int k = 0; k < num2; k++)
58600 {
58601 Dust obj = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
58602 obj.velocity.Y -= 3f + (float)num * 1.5f;
58603 obj.velocity.Y *= Main.rand.NextFloat();
58604 obj.scale += (float)num * 0.03f;
58605 }
58606 if (num >= 2)
58607 {
58608 for (int l = 0; l < num2 - 1; l++)
58609 {
58610 Dust obj2 = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
58611 obj2.velocity.Y -= 1f + (float)num;
58612 obj2.velocity.Y *= Main.rand.NextFloat();
58613 }
58614 }
58615 if (num2 > 0)
58616 {
58617 causedShockwaves = true;
58618 }
58619 }
58620 }
58621 }
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Main.dust, Terraria.Framing.GetTileSafely(), Terraria.WorldGen.KillTile_GetTileDustAmount(), Terraria.WorldGen.KillTile_MakeTileDust(), System.obj, Terraria.Main.rand, Terraria.Main.tileFrameImportant, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.