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

◆ SellItem()

bool Terraria.Player.SellItem ( Item item,
int stack = -1 )
inline

Definition at line 33352 of file Player.cs.

33353 {
33355 if (calcForSelling <= 0)
33356 {
33357 return false;
33358 }
33359 if (stack == -1)
33360 {
33361 stack = item.stack;
33362 }
33363 Item[] array = new Item[58];
33364 for (int i = 0; i < 58; i++)
33365 {
33366 array[i] = new Item();
33367 array[i] = inventory[i].Clone();
33368 }
33369 long num = calcForSelling / 5;
33370 if (num < 1)
33371 {
33372 num = 1L;
33373 }
33374 long num2 = num;
33375 num *= stack;
33376 int amount = Main.shopSellbackHelper.GetAmount(item);
33377 if (amount > 0)
33378 {
33379 num += (-num2 + calcForBuying) * Math.Min(amount, item.stack);
33380 }
33381 bool flag = false;
33382 while (num >= 1000000 && !flag)
33383 {
33384 int num3 = -1;
33385 for (int num4 = 53; num4 >= 0; num4--)
33386 {
33387 if (num3 == -1 && (inventory[num4].type == 0 || inventory[num4].stack == 0))
33388 {
33389 num3 = num4;
33390 }
33391 while (inventory[num4].type == 74 && inventory[num4].stack < inventory[num4].maxStack && num >= 1000000)
33392 {
33393 inventory[num4].stack++;
33394 num -= 1000000;
33395 DoCoins(num4);
33396 if (inventory[num4].stack == 0 && num3 == -1)
33397 {
33398 num3 = num4;
33399 }
33400 }
33401 }
33402 if (num >= 1000000)
33403 {
33404 if (num3 == -1)
33405 {
33406 flag = true;
33407 continue;
33408 }
33410 num -= 1000000;
33411 }
33412 }
33413 while (num >= 10000 && !flag)
33414 {
33415 int num5 = -1;
33416 for (int num6 = 53; num6 >= 0; num6--)
33417 {
33418 if (num5 == -1 && (inventory[num6].type == 0 || inventory[num6].stack == 0))
33419 {
33420 num5 = num6;
33421 }
33422 while (inventory[num6].type == 73 && inventory[num6].stack < inventory[num6].maxStack && num >= 10000)
33423 {
33424 inventory[num6].stack++;
33425 num -= 10000;
33426 DoCoins(num6);
33427 if (inventory[num6].stack == 0 && num5 == -1)
33428 {
33429 num5 = num6;
33430 }
33431 }
33432 }
33433 if (num >= 10000)
33434 {
33435 if (num5 == -1)
33436 {
33437 flag = true;
33438 continue;
33439 }
33441 num -= 10000;
33442 }
33443 }
33444 while (num >= 100 && !flag)
33445 {
33446 int num7 = -1;
33447 for (int num8 = 53; num8 >= 0; num8--)
33448 {
33449 if (num7 == -1 && (inventory[num8].type == 0 || inventory[num8].stack == 0))
33450 {
33451 num7 = num8;
33452 }
33453 while (inventory[num8].type == 72 && inventory[num8].stack < inventory[num8].maxStack && num >= 100)
33454 {
33455 inventory[num8].stack++;
33456 num -= 100;
33457 DoCoins(num8);
33458 if (inventory[num8].stack == 0 && num7 == -1)
33459 {
33460 num7 = num8;
33461 }
33462 }
33463 }
33464 if (num >= 100)
33465 {
33466 if (num7 == -1)
33467 {
33468 flag = true;
33469 continue;
33470 }
33472 num -= 100;
33473 }
33474 }
33475 while (num >= 1 && !flag)
33476 {
33477 int num9 = -1;
33478 for (int num10 = 53; num10 >= 0; num10--)
33479 {
33480 if (num9 == -1 && (inventory[num10].type == 0 || inventory[num10].stack == 0))
33481 {
33482 num9 = num10;
33483 }
33484 while (inventory[num10].type == 71 && inventory[num10].stack < inventory[num10].maxStack && num >= 1)
33485 {
33487 num--;
33488 DoCoins(num10);
33489 if (inventory[num10].stack == 0 && num9 == -1)
33490 {
33491 num9 = num10;
33492 }
33493 }
33494 }
33495 if (num >= 1)
33496 {
33497 if (num9 == -1)
33498 {
33499 flag = true;
33500 continue;
33501 }
33503 num--;
33504 }
33505 }
33506 if (flag)
33507 {
33508 for (int j = 0; j < 58; j++)
33509 {
33510 inventory[j] = array[j].Clone();
33511 }
33512 return false;
33513 }
33514 return true;
33515 }
static byte Min(byte val1, byte val2)
Definition Math.cs:912
Item Clone()
Definition Item.cs:49916
int stack
Definition Item.cs:149
void SetDefaults(int Type=0)
Definition Item.cs:47332
void GetItemExpectedPrice(Item item, out long calcForSelling, out long calcForBuying)
Definition Player.cs:33543
void DoCoins(int i)
Definition Player.cs:37047
Item[] inventory
Definition Player.cs:1257

References System.array, Terraria.Item.Clone(), System.item, System.L, System.Math.Min(), Terraria.Item.SetDefaults(), Terraria.Main.shopSellbackHelper, Terraria.Item.stack, and System.type.

Referenced by Terraria.UI.ItemSlot.LeftClick(), and Terraria.UI.ItemSlot.SellOrTrash().