public Item GetItem(int plr, Item newItem, bool longText = false, bool noText = false)
{
bool flag = newItem.itemId >= 71 && newItem.itemId <= 74;
Item newItem1 = newItem;
int num1 = 50;
if (newItem.noGrabDelay > 0)
return newItem1;
int num2 = 0;
if (newItem.uniqueStack && this.HasItem(newItem.itemId))
return newItem1;
if (newItem.itemId == 71 || newItem.itemId == 72 || (newItem.itemId == 73 || newItem.itemId == 74))
{
num2 = -4;
num1 = 54;
}
if ((newItem1.ammo > 0 || newItem1.bait > 0) && !newItem1.notAmmo || newItem1.itemId == 530)
{
newItem1 = this.FillAmmo(plr, newItem1, noText);
if (newItem1.itemId == 0 || newItem1.stack == 0)
return new Item();
}
for (int index = num2; index < 50; ++index)
{
int i = index;
if (i < 0)
i = 54 + index;
if (this.inventory[i].itemId > 0 && this.inventory[i].stack < this.inventory[i].maxStack && newItem1.IsTheSameAs(this.inventory[i]))
{
if (flag)
Main.PlaySound(38, (int)this.position.X, (int)this.position.Y, 1);
else
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
if (newItem1.stack + this.inventory[i].stack <= this.inventory[i].maxStack)
{
this.inventory[i].stack += newItem1.stack;
if (!noText)
ItemText.NewText(newItem, newItem1.stack, false, longText);
this.DoCoins(i);
if (plr == Main.myPlayer)
Recipe.FindRecipes();
AchievementsHelper.NotifyItemPickup(this, newItem1);
return new Item();
}
AchievementsHelper.NotifyItemPickup(this, newItem1, this.inventory[i].maxStack - this.inventory[i].stack);
newItem1.stack -= this.inventory[i].maxStack - this.inventory[i].stack;
if (!noText)
ItemText.NewText(newItem, this.inventory[i].maxStack - this.inventory[i].stack, false, longText);
this.inventory[i].stack = this.inventory[i].maxStack;
this.DoCoins(i);
if (plr == Main.myPlayer)
Recipe.FindRecipes();
}
}
if (newItem.itemId != 71 && newItem.itemId != 72 && (newItem.itemId != 73 && newItem.itemId != 74) && newItem.useStyle > 0)
{
for (int i = 0; i < 10; ++i)
{
if (this.inventory[i].itemId == 0)
{
this.inventory[i] = newItem1;
if (!noText)
ItemText.NewText(newItem, newItem.stack, false, longText);
this.DoCoins(i);
if (flag)
Main.PlaySound(38, (int)this.position.X, (int)this.position.Y, 1);
else
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
if (plr == Main.myPlayer)
Recipe.FindRecipes();
AchievementsHelper.NotifyItemPickup(this, newItem1);
return new Item();
}
}
}
if (newItem.favorited)
{
for (int i = 0; i < num1; ++i)
{
if (this.inventory[i].itemId == 0)
{
this.inventory[i] = newItem1;
if (!noText)
ItemText.NewText(newItem, newItem.stack, false, longText);
this.DoCoins(i);
if (flag)
Main.PlaySound(38, (int)this.position.X, (int)this.position.Y, 1);
else
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
if (plr == Main.myPlayer)
Recipe.FindRecipes();
AchievementsHelper.NotifyItemPickup(this, newItem1);
return new Item();
}
}
}
else
{
for (int i = num1 - 1; i >= 0; --i)
{
if (this.inventory[i].itemId == 0)
{
this.inventory[i] = newItem1;
if (!noText)
ItemText.NewText(newItem, newItem.stack, false, longText);
this.DoCoins(i);
if (flag)
Main.PlaySound(38, (int)this.position.X, (int)this.position.Y, 1);
else
Main.PlaySound(7, (int)this.position.X, (int)this.position.Y, 1);
if (plr == Main.myPlayer)
Recipe.FindRecipes();
AchievementsHelper.NotifyItemPickup(this, newItem1);
return new Item();
}
}
}
return newItem1;
}