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

◆ SporeSac()

void Terraria.Player.SporeSac ( Item sourceItem)
inline

Definition at line 40477 of file Player.cs.

40478 {
40479 int damage = 70;
40480 float knockBack = 1.5f;
40481 if (Main.rand.Next(15) != 0)
40482 {
40483 return;
40484 }
40485 int num = 0;
40486 for (int i = 0; i < 1000; i++)
40487 {
40488 if (Main.projectile[i].active && Main.projectile[i].owner == whoAmI && (Main.projectile[i].type == 567 || Main.projectile[i].type == 568))
40489 {
40490 num++;
40491 }
40492 }
40493 if (Main.rand.Next(15) < num || num >= 10)
40494 {
40495 return;
40496 }
40497 int num2 = 50;
40498 int num3 = 24;
40499 int num4 = 90;
40500 for (int j = 0; j < num2; j++)
40501 {
40502 int num5 = Main.rand.Next(200 - j * 2, 400 + j * 2);
40503 Vector2 center = base.Center;
40504 center.X += Main.rand.Next(-num5, num5 + 1);
40505 center.Y += Main.rand.Next(-num5, num5 + 1);
40506 if (Collision.SolidCollision(center, num3, num3) || Collision.WetCollision(center, num3, num3))
40507 {
40508 continue;
40509 }
40510 center.X += num3 / 2;
40511 center.Y += num3 / 2;
40512 if (!Collision.CanHit(new Vector2(base.Center.X, position.Y), 1, 1, center, 1, 1) && !Collision.CanHit(new Vector2(base.Center.X, position.Y - 50f), 1, 1, center, 1, 1))
40513 {
40514 continue;
40515 }
40516 int num6 = (int)center.X / 16;
40517 int num7 = (int)center.Y / 16;
40518 bool flag = false;
40519 if (Main.rand.Next(3) == 0 && Main.tile[num6, num7] != null && Main.tile[num6, num7].wall > 0)
40520 {
40521 flag = true;
40522 }
40523 else
40524 {
40525 center.X -= num4 / 2;
40526 center.Y -= num4 / 2;
40527 if (Collision.SolidCollision(center, num4, num4))
40528 {
40529 center.X += num4 / 2;
40530 center.Y += num4 / 2;
40531 flag = true;
40532 }
40533 else if (Main.tile[num6, num7] != null && Main.tile[num6, num7].active() && Main.tile[num6, num7].type == 19)
40534 {
40535 flag = true;
40536 }
40537 }
40538 if (!flag)
40539 {
40540 continue;
40541 }
40542 for (int k = 0; k < 1000; k++)
40543 {
40544 if (Main.projectile[k].active && Main.projectile[k].owner == whoAmI && Main.projectile[k].aiStyle == 105 && (center - Main.projectile[k].Center).Length() < 48f)
40545 {
40546 flag = false;
40547 break;
40548 }
40549 }
40550 if (flag && Main.myPlayer == whoAmI)
40551 {
40552 Projectile.NewProjectile(GetProjectileSource_Accessory(sourceItem), center.X, center.Y, 0f, 0f, 567 + Main.rand.Next(2), damage, knockBack, whoAmI);
40553 break;
40554 }
40555 }
40556 }
Vector2 position
Definition Entity.cs:14
IEntitySource GetProjectileSource_Accessory(Item item)
Definition Player.cs:9312

References Terraria.Collision.CanHit(), Terraria.Main.myPlayer, Terraria.Projectile.NewProjectile(), Terraria.Main.projectile, Terraria.Main.rand, Terraria.Collision.SolidCollision(), Terraria.Main.tile, and Terraria.Collision.WetCollision().