Terraria.Player.GrabItems C# (CSharp) Method

GrabItems() private method

private GrabItems ( int i ) : void
i int
return void
        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;
                            }
                        }
                    }
                }
            }
        }
Player