TModLoader v1.4.4.9
TModLoader 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 )
inline

Definition at line 76620 of file Projectile.cs.

76621 {
76622 //IL_001e: Unknown result type (might be due to invalid IL or missing references)
76623 //IL_0029: Unknown result type (might be due to invalid IL or missing references)
76624 causedShockwaves = false;
76625 int num = 4;
76626 for (int i = scanAreaStart.X; i <= scanAreaEnd.X; i++)
76627 {
76628 for (int j = scanAreaStart.Y; j <= scanAreaEnd.Y; j++)
76629 {
76630 if (Vector2.Distance(explosionOrigin, new Vector2((float)(i * 16), (float)(j * 16))) > (float)explosionRange)
76631 {
76632 continue;
76633 }
76634 Tile tileSafely = Framing.GetTileSafely(i, j);
76635 if (!tileSafely.active() || !Main.tileSolid[tileSafely.type] || Main.tileSolidTop[tileSafely.type] || Main.tileFrameImportant[tileSafely.type])
76636 {
76637 continue;
76638 }
76639 Tile tileSafely2 = Framing.GetTileSafely(i, j - 1);
76640 if (tileSafely2.active() && Main.tileSolid[tileSafely2.type] && !Main.tileSolidTop[tileSafely2.type])
76641 {
76642 continue;
76643 }
76644 int num2 = WorldGen.KillTile_GetTileDustAmount(fail: true, tileSafely, i, j) * dustAmountMultiplier;
76645 for (int k = 0; k < num2; k++)
76646 {
76647 Dust obj = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
76648 obj.velocity.Y -= 3f + (float)num * 1.5f;
76649 obj.velocity.Y *= Main.rand.NextFloat();
76650 obj.scale += (float)num * 0.03f;
76651 }
76652 if (num >= 2)
76653 {
76654 for (int l = 0; l < num2 - 1; l++)
76655 {
76656 Dust obj2 = Main.dust[WorldGen.KillTile_MakeTileDust(i, j, tileSafely)];
76657 obj2.velocity.Y -= 1f + (float)num;
76658 obj2.velocity.Y *= Main.rand.NextFloat();
76659 }
76660 }
76661 if (num2 > 0)
76662 {
76663 causedShockwaves = true;
76664 }
76665 }
76666 }
76667 }

References Terraria.Main.dust, Terraria.Framing.GetTileSafely(), Terraria.WorldGen.KillTile_GetTileDustAmount(), Terraria.WorldGen.KillTile_MakeTileDust(), Terraria.Main.rand, Terraria.Main.tileFrameImportant, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.

+ Here is the call graph for this function: