private void GrabItems(int i)
{
for (int number = 0; number < 400; ++number)
{
if (Main.item[number].active && Main.item[number].noGrabDelay == 0 && Main.item[number].owner == i)
{
int num1 = Player.defaultItemGrabRange;
if (this.goldRing && Main.item[number].itemId >= 71 && Main.item[number].itemId <= 74)
num1 += Item.coinGrabRange;
if (this.manaMagnet && (Main.item[number].itemId == 184 || Main.item[number].itemId == 1735 || Main.item[number].itemId == 1868))
num1 += Item.manaGrabRange;
if (this.lifeMagnet && (Main.item[number].itemId == 58 || Main.item[number].itemId == 1734 || Main.item[number].itemId == 1867))
num1 += Item.lifeGrabRange;
if (ItemID.Sets.NebulaPickup[Main.item[number].itemId])
num1 += 100;
if (new Microsoft.Xna.Framework.Rectangle((int)this.position.X, (int)this.position.Y, this.width, this.height).Intersects(new Microsoft.Xna.Framework.Rectangle((int)Main.item[number].position.X, (int)Main.item[number].position.Y, Main.item[number].width, Main.item[number].height)))
{
if (i == Main.myPlayer && (this.inventory[this.selectedItem].itemId != 0 || this.itemAnimation <= 0))
{
if (ItemID.Sets.NebulaPickup[Main.item[number].itemId])
{
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
int type = Main.item[number].buffType;
Main.item[number] = new Item();
if (Main.netMode == 1)
{
NetMessage.SendData(102, -1, -1, "", i, (float)type, this.Center.X, this.Center.Y, 0, 0, 0);
NetMessage.SendData(21, -1, -1, "", number, 0.0f, 0.0f, 0.0f, 0, 0, 0);
}
else
this.NebulaLevelup(type);
}
if (Main.item[number].itemId == 58 || Main.item[number].itemId == 1734 || Main.item[number].itemId == 1867)
{
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
this.statLife += 20;
if (Main.myPlayer == this.whoAmI)
this.HealEffect(20, true);
if (this.statLife > this.statLifeMax2)
this.statLife = this.statLifeMax2;
Main.item[number] = new Item();
if (Main.netMode == 1)
NetMessage.SendData(21, -1, -1, "", number, 0.0f, 0.0f, 0.0f, 0, 0, 0);
}
else if (Main.item[number].itemId == 184 || Main.item[number].itemId == 1735 || Main.item[number].itemId == 1868)
{
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
this.statMana += 100;
if (Main.myPlayer == this.whoAmI)
this.ManaEffect(100);
if (this.statMana > this.statManaMax2)
this.statMana = this.statManaMax2;
Main.item[number] = new Item();
if (Main.netMode == 1)
NetMessage.SendData(21, -1, -1, "", number, 0.0f, 0.0f, 0.0f, 0, 0, 0);
}
else
{
Main.item[number] = this.GetItem(i, Main.item[number], false, false);
if (Main.netMode == 1)
NetMessage.SendData(21, -1, -1, "", number, 0.0f, 0.0f, 0.0f, 0, 0, 0);
}
}
}
else if (new Microsoft.Xna.Framework.Rectangle((int)this.position.X - num1, (int)this.position.Y - num1, this.width + num1 * 2, this.height + num1 * 2).Intersects(new Microsoft.Xna.Framework.Rectangle((int)Main.item[number].position.X, (int)Main.item[number].position.Y, Main.item[number].width, Main.item[number].height)) && this.ItemSpace(Main.item[number]))
{
Main.item[number].beingGrabbed = true;
if (this.manaMagnet && (Main.item[number].itemId == 184 || Main.item[number].itemId == 1735 || Main.item[number].itemId == 1868))
{
float num2 = 12f;
Vector2 vector2 = new Vector2(Main.item[number].position.X + (float)(Main.item[number].width / 2), Main.item[number].position.Y + (float)(Main.item[number].height / 2));
float num3 = this.Center.X - vector2.X;
float num4 = this.Center.Y - vector2.Y;
float num5 = (float)Math.Sqrt((double)num3 * (double)num3 + (double)num4 * (double)num4);
float num6 = num2 / num5;
float num7 = num3 * num6;
float num8 = num4 * num6;
int num9 = 5;
Main.item[number].velocity.X = (Main.item[number].velocity.X * (float)(num9 - 1) + num7) / (float)num9;
Main.item[number].velocity.Y = (Main.item[number].velocity.Y * (float)(num9 - 1) + num8) / (float)num9;
}
else if (this.lifeMagnet && (Main.item[number].itemId == 58 || Main.item[number].itemId == 1734 || Main.item[number].itemId == 1867))
{
float num2 = 15f;
Vector2 vector2 = new Vector2(Main.item[number].position.X + (float)(Main.item[number].width / 2), Main.item[number].position.Y + (float)(Main.item[number].height / 2));
float num3 = this.Center.X - vector2.X;
float num4 = this.Center.Y - vector2.Y;
float num5 = (float)Math.Sqrt((double)num3 * (double)num3 + (double)num4 * (double)num4);
float num6 = num2 / num5;
float num7 = num3 * num6;
float num8 = num4 * num6;
int num9 = 5;
Main.item[number].velocity.X = (Main.item[number].velocity.X * (float)(num9 - 1) + num7) / (float)num9;
Main.item[number].velocity.Y = (Main.item[number].velocity.Y * (float)(num9 - 1) + num8) / (float)num9;
}
else if (this.goldRing && Main.item[number].itemId >= 71 && Main.item[number].itemId <= 74)
{
float num2 = 12f;
Vector2 vector2 = new Vector2(Main.item[number].position.X + (float)(Main.item[number].width / 2), Main.item[number].position.Y + (float)(Main.item[number].height / 2));
float num3 = this.Center.X - vector2.X;
float num4 = this.Center.Y - vector2.Y;
float num5 = (float)Math.Sqrt((double)num3 * (double)num3 + (double)num4 * (double)num4);
float num6 = num2 / num5;
float num7 = num3 * num6;
float num8 = num4 * num6;
int num9 = 5;
Main.item[number].velocity.X = (Main.item[number].velocity.X * (float)(num9 - 1) + num7) / (float)num9;
Main.item[number].velocity.Y = (Main.item[number].velocity.Y * (float)(num9 - 1) + num8) / (float)num9;
}
else if (ItemID.Sets.NebulaPickup[Main.item[number].itemId])
{
float num2 = 12f;
Vector2 vector2 = new Vector2(Main.item[number].position.X + (float)(Main.item[number].width / 2), Main.item[number].position.Y + (float)(Main.item[number].height / 2));
float num3 = this.Center.X - vector2.X;
float num4 = this.Center.Y - vector2.Y;
float num5 = (float)Math.Sqrt((double)num3 * (double)num3 + (double)num4 * (double)num4);
float num6 = num2 / num5;
float num7 = num3 * num6;
float num8 = num4 * num6;
int num9 = 5;
Main.item[number].velocity.X = (Main.item[number].velocity.X * (float)(num9 - 1) + num7) / (float)num9;
Main.item[number].velocity.Y = (Main.item[number].velocity.Y * (float)(num9 - 1) + num8) / (float)num9;
}
else
{
if ((double)this.position.X + (double)this.width * 0.5 > (double)Main.item[number].position.X + (double)Main.item[number].width * 0.5)
{
if ((double)Main.item[number].velocity.X < (double)Player.itemGrabSpeedMax + (double)this.velocity.X)
Main.item[number].velocity.X += Player.itemGrabSpeed;
if ((double)Main.item[number].velocity.X < 0.0)
Main.item[number].velocity.X += Player.itemGrabSpeed * 0.75f;
}
else
{
if ((double)Main.item[number].velocity.X > -(double)Player.itemGrabSpeedMax + (double)this.velocity.X)
Main.item[number].velocity.X -= Player.itemGrabSpeed;
if ((double)Main.item[number].velocity.X > 0.0)
Main.item[number].velocity.X -= Player.itemGrabSpeed * 0.75f;
}
if ((double)this.position.Y + (double)this.height * 0.5 > (double)Main.item[number].position.Y + (double)Main.item[number].height * 0.5)
{
if ((double)Main.item[number].velocity.Y < (double)Player.itemGrabSpeedMax)
Main.item[number].velocity.Y += Player.itemGrabSpeed;
if ((double)Main.item[number].velocity.Y < 0.0)
Main.item[number].velocity.Y += Player.itemGrabSpeed * 0.75f;
}
else
{
if ((double)Main.item[number].velocity.Y > -(double)Player.itemGrabSpeedMax)
Main.item[number].velocity.Y -= Player.itemGrabSpeed;
if ((double)Main.item[number].velocity.Y > 0.0)
Main.item[number].velocity.Y -= Player.itemGrabSpeed * 0.75f;
}
}
}
}
}
}