Terraria.Player.GetItem C# (CSharp) Method

GetItem() public method

public GetItem ( int plr, Item newItem, bool longText = false, bool noText = false ) : Item
plr int
newItem Item
longText bool
noText bool
return Item
        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;
        }

Usage Example

Example #1
0
        public static string BartenderHelpText(NPC npc)
        {
            object substitutionObject = Lang.CreateDialogSubstitutionObject(npc);
            Player player             = Main.player[Main.myPlayer];

            if (player.bartenderQuestLog == 0)
            {
                ++player.bartenderQuestLog;
                Item newItem = new Item();
                newItem.SetDefaults(3817, false);
                newItem.stack    = 5;
                newItem.position = player.Center;
                Item obj = player.GetItem(player.whoAmI, newItem, true, false);
                if (obj.stack > 0)
                {
                    int number = Item.NewItem((int)player.position.X, (int)player.position.Y, player.width, player.height, obj.type, obj.stack, false, 0, true, false);
                    if (Main.netMode == 1)
                    {
                        NetMessage.SendData(21, -1, -1, (NetworkText)null, number, 1f, 0.0f, 0.0f, 0, 0, 0);
                    }
                }
                return(Language.GetTextValueWith("BartenderSpecialText.FirstHelp", substitutionObject));
            }
            LocalizedText[] all = Language.FindAll(Lang.CreateDialogFilter("BartenderHelpText.", substitutionObject));
            if (Main.BartenderHelpTextIndex >= all.Length)
            {
                Main.BartenderHelpTextIndex = 0;
            }
            return(all[Main.BartenderHelpTextIndex++].FormatWith(substitutionObject));
        }
All Usage Examples Of Terraria.Player::GetItem
Player