Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Chest.cs
Go to the documentation of this file.
10using Terraria.ID;
12
13namespace Terraria;
14
15public class Chest : IFixLoadedData
16{
17 public const float chestStackRange = 600f;
18
19 public const int maxChestTypes = 52;
20
21 public static int[] chestTypeToIcon = new int[52];
22
23 public static int[] chestItemSpawn = new int[52];
24
25 public const int maxChestTypes2 = 17;
26
27 public static int[] chestTypeToIcon2 = new int[17];
28
29 public static int[] chestItemSpawn2 = new int[17];
30
31 public const int maxDresserTypes = 43;
32
33 public static int[] dresserTypeToIcon = new int[43];
34
35 public static int[] dresserItemSpawn = new int[43];
36
37 public const int maxItems = 40;
38
39 public const int MaxNameLength = 20;
40
41 public Item[] item;
42
43 public int x;
44
45 public int y;
46
47 public bool bankChest;
48
49 public string name;
50
51 public int frameCounter;
52
53 public int frame;
54
56
57 private static HashSet<int> _chestInUse = new HashSet<int>();
58
59 public Chest(bool bank = false)
60 {
61 item = new Item[40];
62 bankChest = bank;
63 name = string.Empty;
64 }
65
66 public override string ToString()
67 {
68 int num = 0;
69 for (int i = 0; i < item.Length; i++)
70 {
71 if (item[i].stack > 0)
72 {
73 num++;
74 }
75 }
76 return $"{{X: {x}, Y: {y}, Count: {num}}}";
77 }
78
79 public static void Initialize()
80 {
81 int[] array = chestItemSpawn;
82 int[] array2 = chestTypeToIcon;
83 array2[0] = (array[0] = 48);
84 array2[1] = (array[1] = 306);
85 array2[2] = 327;
86 array[2] = 306;
87 array2[3] = (array[3] = 328);
88 array2[4] = 329;
89 array[4] = 328;
90 array2[5] = (array[5] = 343);
91 array2[6] = (array[6] = 348);
92 array2[7] = (array[7] = 625);
93 array2[8] = (array[8] = 626);
94 array2[9] = (array[9] = 627);
95 array2[10] = (array[10] = 680);
96 array2[11] = (array[11] = 681);
97 array2[12] = (array[12] = 831);
98 array2[13] = (array[13] = 838);
99 array2[14] = (array[14] = 914);
100 array2[15] = (array[15] = 952);
101 array2[16] = (array[16] = 1142);
102 array2[17] = (array[17] = 1298);
103 array2[18] = (array[18] = 1528);
104 array2[19] = (array[19] = 1529);
105 array2[20] = (array[20] = 1530);
106 array2[21] = (array[21] = 1531);
107 array2[22] = (array[22] = 1532);
108 array2[23] = 1533;
109 array[23] = 1528;
110 array2[24] = 1534;
111 array[24] = 1529;
112 array2[25] = 1535;
113 array[25] = 1530;
114 array2[26] = 1536;
115 array[26] = 1531;
116 array2[27] = 1537;
117 array[27] = 1532;
118 array2[28] = (array[28] = 2230);
119 array2[29] = (array[29] = 2249);
120 array2[30] = (array[30] = 2250);
121 array2[31] = (array[31] = 2526);
122 array2[32] = (array[32] = 2544);
123 array2[33] = (array[33] = 2559);
124 array2[34] = (array[34] = 2574);
125 array2[35] = (array[35] = 2612);
126 array2[36] = 327;
127 array[36] = 2612;
128 array2[37] = (array[37] = 2613);
129 array2[38] = 327;
130 array[38] = 2613;
131 array2[39] = (array[39] = 2614);
132 array2[40] = 327;
133 array[40] = 2614;
134 array2[41] = (array[41] = 2615);
135 array2[42] = (array[42] = 2616);
136 array2[43] = (array[43] = 2617);
137 array2[44] = (array[44] = 2618);
138 array2[45] = (array[45] = 2619);
139 array2[46] = (array[46] = 2620);
140 array2[47] = (array[47] = 2748);
141 array2[48] = (array[48] = 2814);
142 array2[49] = (array[49] = 3180);
143 array2[50] = (array[50] = 3125);
144 array2[51] = (array[51] = 3181);
145 int[] array3 = chestItemSpawn2;
146 int[] array4 = chestTypeToIcon2;
147 array4[0] = (array3[0] = 3884);
148 array4[1] = (array3[1] = 3885);
149 array4[2] = (array3[2] = 3939);
150 array4[3] = (array3[3] = 3965);
151 array4[4] = (array3[4] = 3988);
152 array4[5] = (array3[5] = 4153);
153 array4[6] = (array3[6] = 4174);
154 array4[7] = (array3[7] = 4195);
155 array4[8] = (array3[8] = 4216);
156 array4[9] = (array3[9] = 4265);
157 array4[10] = (array3[10] = 4267);
158 array4[11] = (array3[11] = 4574);
159 array4[12] = (array3[12] = 4712);
160 array4[13] = 4714;
161 array3[13] = 4712;
162 array4[14] = (array3[14] = 5156);
163 array4[15] = (array3[15] = 5177);
164 array4[16] = (array3[16] = 5198);
165 dresserTypeToIcon[0] = (dresserItemSpawn[0] = 334);
166 dresserTypeToIcon[1] = (dresserItemSpawn[1] = 647);
167 dresserTypeToIcon[2] = (dresserItemSpawn[2] = 648);
168 dresserTypeToIcon[3] = (dresserItemSpawn[3] = 649);
169 dresserTypeToIcon[4] = (dresserItemSpawn[4] = 918);
170 dresserTypeToIcon[5] = (dresserItemSpawn[5] = 2386);
171 dresserTypeToIcon[6] = (dresserItemSpawn[6] = 2387);
172 dresserTypeToIcon[7] = (dresserItemSpawn[7] = 2388);
173 dresserTypeToIcon[8] = (dresserItemSpawn[8] = 2389);
174 dresserTypeToIcon[9] = (dresserItemSpawn[9] = 2390);
175 dresserTypeToIcon[10] = (dresserItemSpawn[10] = 2391);
176 dresserTypeToIcon[11] = (dresserItemSpawn[11] = 2392);
177 dresserTypeToIcon[12] = (dresserItemSpawn[12] = 2393);
178 dresserTypeToIcon[13] = (dresserItemSpawn[13] = 2394);
179 dresserTypeToIcon[14] = (dresserItemSpawn[14] = 2395);
180 dresserTypeToIcon[15] = (dresserItemSpawn[15] = 2396);
181 dresserTypeToIcon[16] = (dresserItemSpawn[16] = 2529);
182 dresserTypeToIcon[17] = (dresserItemSpawn[17] = 2545);
183 dresserTypeToIcon[18] = (dresserItemSpawn[18] = 2562);
184 dresserTypeToIcon[19] = (dresserItemSpawn[19] = 2577);
185 dresserTypeToIcon[20] = (dresserItemSpawn[20] = 2637);
186 dresserTypeToIcon[21] = (dresserItemSpawn[21] = 2638);
187 dresserTypeToIcon[22] = (dresserItemSpawn[22] = 2639);
188 dresserTypeToIcon[23] = (dresserItemSpawn[23] = 2640);
189 dresserTypeToIcon[24] = (dresserItemSpawn[24] = 2816);
190 dresserTypeToIcon[25] = (dresserItemSpawn[25] = 3132);
191 dresserTypeToIcon[26] = (dresserItemSpawn[26] = 3134);
192 dresserTypeToIcon[27] = (dresserItemSpawn[27] = 3133);
193 dresserTypeToIcon[28] = (dresserItemSpawn[28] = 3911);
194 dresserTypeToIcon[29] = (dresserItemSpawn[29] = 3912);
195 dresserTypeToIcon[30] = (dresserItemSpawn[30] = 3913);
196 dresserTypeToIcon[31] = (dresserItemSpawn[31] = 3914);
197 dresserTypeToIcon[32] = (dresserItemSpawn[32] = 3934);
198 dresserTypeToIcon[33] = (dresserItemSpawn[33] = 3968);
199 dresserTypeToIcon[34] = (dresserItemSpawn[34] = 4148);
200 dresserTypeToIcon[35] = (dresserItemSpawn[35] = 4169);
201 dresserTypeToIcon[36] = (dresserItemSpawn[36] = 4190);
202 dresserTypeToIcon[37] = (dresserItemSpawn[37] = 4211);
203 dresserTypeToIcon[38] = (dresserItemSpawn[38] = 4301);
204 dresserTypeToIcon[39] = (dresserItemSpawn[39] = 4569);
205 dresserTypeToIcon[40] = (dresserItemSpawn[40] = 5151);
206 dresserTypeToIcon[41] = (dresserItemSpawn[41] = 5172);
207 dresserTypeToIcon[42] = (dresserItemSpawn[42] = 5193);
208 }
209
210 private static bool IsPlayerInChest(int i)
211 {
212 for (int j = 0; j < 255; j++)
213 {
214 if (Main.player[j].chest == i)
215 {
216 return true;
217 }
218 }
219 return false;
220 }
221
223 {
224 List<int> list = new List<int>();
225 for (int i = 0; i < 255; i++)
226 {
227 if (Main.player[i].chest > -1)
228 {
229 list.Add(Main.player[i].chest);
230 }
231 }
232 return list;
233 }
234
235 public static bool IsLocked(int x, int y)
236 {
237 return IsLocked(Main.tile[x, y]);
238 }
239
240 public static bool IsLocked(Tile t)
241 {
242 if (t == null)
243 {
244 return true;
245 }
246 if (t.type == 21 && ((t.frameX >= 72 && t.frameX <= 106) || (t.frameX >= 144 && t.frameX <= 178) || (t.frameX >= 828 && t.frameX <= 1006) || (t.frameX >= 1296 && t.frameX <= 1330) || (t.frameX >= 1368 && t.frameX <= 1402) || (t.frameX >= 1440 && t.frameX <= 1474)))
247 {
248 return true;
249 }
250 if (t.type == 467)
251 {
252 return t.frameX / 36 == 13;
253 }
254 return false;
255 }
256
257 public static void ServerPlaceItem(int plr, int slot)
258 {
260 {
261 int num = slot - PlayerItemSlotID.Bank4_0;
262 Main.player[plr].bank4.item[num] = PutItemInNearbyChest(Main.player[plr].bank4.item[num], Main.player[plr].Center);
263 NetMessage.SendData(5, -1, -1, null, plr, slot, (int)Main.player[plr].bank4.item[num].prefix);
264 }
265 else if (slot < 58)
266 {
267 Main.player[plr].inventory[slot] = PutItemInNearbyChest(Main.player[plr].inventory[slot], Main.player[plr].Center);
268 NetMessage.SendData(5, -1, -1, null, plr, slot, (int)Main.player[plr].inventory[slot].prefix);
269 }
270 }
271
272 public static Item PutItemInNearbyChest(Item item, Vector2 position)
273 {
274 if (Main.netMode == 1)
275 {
276 return item;
277 }
278 bool flag = true;
279 for (int i = 0; i < 8000; i++)
280 {
281 bool flag2 = false;
282 bool flag3 = false;
283 if (Main.chest[i] == null || IsPlayerInChest(i) || IsLocked(Main.chest[i].x, Main.chest[i].y))
284 {
285 continue;
286 }
287 Vector2 vector = new Vector2(Main.chest[i].x * 16 + 16, Main.chest[i].y * 16 + 16);
288 if ((vector - position).Length() >= 600f)
289 {
290 continue;
291 }
292 for (int j = 0; j < Main.chest[i].item.Length; j++)
293 {
294 if (Main.chest[i].item[j].IsAir)
295 {
296 flag3 = true;
297 }
298 else if (item.IsTheSameAs(Main.chest[i].item[j]))
299 {
300 flag2 = true;
301 int num = Main.chest[i].item[j].maxStack - Main.chest[i].item[j].stack;
302 if (num > 0)
303 {
304 if (num > item.stack)
305 {
306 num = item.stack;
307 }
308 VisualizeChestTransfer(position, vector, item, num);
309 if (flag)
310 {
311 item.stack -= num;
312 Main.chest[i].item[j].stack += num;
313 }
314 if (item.stack <= 0)
315 {
317 return item;
318 }
319 }
320 }
321 else
322 {
323 flag3 = true;
324 }
325 }
326 if (!(flag2 && flag3) || item.stack <= 0)
327 {
328 continue;
329 }
330 for (int k = 0; k < Main.chest[i].item.Length; k++)
331 {
332 if (Main.chest[i].item[k].type == 0 || Main.chest[i].item[k].stack == 0)
333 {
335 if (flag)
336 {
337 Main.chest[i].item[k] = item.Clone();
339 }
340 return item;
341 }
342 }
343 }
344 return item;
345 }
346
348 {
350 {
351 PositionInWorld = position,
352 MovementVector = chestPosition - position,
353 UniqueInfoPiece = item.type
354 });
355 }
356
358 {
359 int[] array = Utils.CoinsSplit(coinsMoved);
360 for (int i = 0; i < array.Length; i++)
361 {
362 if (array[i] >= 1)
363 {
365 {
366 PositionInWorld = position,
367 MovementVector = chestPosition - position,
368 UniqueInfoPiece = 71 + i
369 });
370 }
371 }
372 }
373
374 public object Clone()
375 {
376 return MemberwiseClone();
377 }
378
379 public static bool Unlock(int X, int Y)
380 {
381 if (Main.tile[X, Y] == null || Main.tile[X + 1, Y] == null || Main.tile[X, Y + 1] == null || Main.tile[X + 1, Y + 1] == null)
382 {
383 return false;
384 }
385 short num = 0;
386 int type = 0;
388 int type2 = tileSafely.type;
389 int num2 = tileSafely.frameX / 36;
390 switch (type2)
391 {
392 case 21:
393 switch (num2)
394 {
395 case 2:
396 num = 36;
397 type = 11;
399 break;
400 case 4:
401 num = 36;
402 type = 11;
403 break;
404 case 23:
405 case 24:
406 case 25:
407 case 26:
408 case 27:
409 if (!NPC.downedPlantBoss)
410 {
411 return false;
412 }
413 num = 180;
414 type = 11;
416 break;
417 case 36:
418 case 38:
419 case 40:
420 num = 36;
421 type = 11;
422 break;
423 default:
424 return false;
425 }
426 break;
427 case 467:
428 if (num2 == 13)
429 {
430 if (!NPC.downedPlantBoss)
431 {
432 return false;
433 }
434 num = 36;
435 type = 11;
437 break;
438 }
439 return false;
440 }
441 SoundEngine.PlaySound(22, X * 16, Y * 16);
442 for (int i = X; i <= X + 1; i++)
443 {
444 for (int j = Y; j <= Y + 1; j++)
445 {
447 if (tileSafely2.type == type2)
448 {
449 tileSafely2.frameX -= num;
450 Main.tile[i, j] = tileSafely2;
451 for (int k = 0; k < 4; k++)
452 {
453 Dust.NewDust(new Vector2(i * 16, j * 16), 16, 16, type);
454 }
455 }
456 }
457 }
458 return true;
459 }
460
461 public static bool Lock(int X, int Y)
462 {
463 if (Main.tile[X, Y] == null || Main.tile[X + 1, Y] == null || Main.tile[X, Y + 1] == null || Main.tile[X + 1, Y + 1] == null)
464 {
465 return false;
466 }
467 short num = 0;
469 int type = tileSafely.type;
470 int num2 = tileSafely.frameX / 36;
471 switch (type)
472 {
473 case 21:
474 switch (num2)
475 {
476 case 1:
477 num = 36;
478 break;
479 case 3:
480 num = 36;
481 break;
482 case 18:
483 case 19:
484 case 20:
485 case 21:
486 case 22:
487 if (!NPC.downedPlantBoss)
488 {
489 return false;
490 }
491 num = 180;
492 break;
493 case 35:
494 case 37:
495 case 39:
496 num = 36;
497 break;
498 default:
499 return false;
500 }
501 break;
502 case 467:
503 if (num2 == 12)
504 {
505 if (!NPC.downedPlantBoss)
506 {
507 return false;
508 }
509 num = 36;
511 break;
512 }
513 return false;
514 }
515 SoundEngine.PlaySound(22, X * 16, Y * 16);
516 for (int i = X; i <= X + 1; i++)
517 {
518 for (int j = Y; j <= Y + 1; j++)
519 {
521 if (tileSafely2.type == type)
522 {
523 tileSafely2.frameX += num;
524 Main.tile[i, j] = tileSafely2;
525 }
526 }
527 }
528 return true;
529 }
530
531 public static int UsingChest(int i)
532 {
533 if (Main.chest[i] != null)
534 {
535 for (int j = 0; j < 255; j++)
536 {
537 if (Main.player[j].active && Main.player[j].chest == i)
538 {
539 return j;
540 }
541 }
542 }
543 return -1;
544 }
545
546 public static int FindChest(int X, int Y)
547 {
548 for (int i = 0; i < 8000; i++)
549 {
550 if (Main.chest[i] != null && Main.chest[i].x == X && Main.chest[i].y == Y)
551 {
552 return i;
553 }
554 }
555 return -1;
556 }
557
558 public static int FindChestByGuessing(int X, int Y)
559 {
560 for (int i = 0; i < 8000; i++)
561 {
562 if (Main.chest[i] != null && Main.chest[i].x >= X && Main.chest[i].x < X + 2 && Main.chest[i].y >= Y && Main.chest[i].y < Y + 2)
563 {
564 return i;
565 }
566 }
567 return -1;
568 }
569
570 public static int FindEmptyChest(int x, int y, int type = 21, int style = 0, int direction = 1, int alternate = 0)
571 {
572 int num = -1;
573 for (int i = 0; i < 8000; i++)
574 {
575 Chest chest = Main.chest[i];
576 if (chest != null)
577 {
578 if (chest.x == x && chest.y == y)
579 {
580 return -1;
581 }
582 }
583 else if (num == -1)
584 {
585 num = i;
586 }
587 }
588 return num;
589 }
590
591 public static bool NearOtherChests(int x, int y)
592 {
593 for (int i = x - 25; i < x + 25; i++)
594 {
595 for (int j = y - 8; j < y + 8; j++)
596 {
598 if (tileSafely.active() && TileID.Sets.BasicChest[tileSafely.type])
599 {
600 return true;
601 }
602 }
603 }
604 return false;
605 }
606
607 public static int AfterPlacement_Hook(int x, int y, int type = 21, int style = 0, int direction = 1, int alternate = 0)
608 {
609 Point16 baseCoords = new Point16(x, y);
611 int num = FindEmptyChest(baseCoords.X, baseCoords.Y);
612 if (num == -1)
613 {
614 return -1;
615 }
616 if (Main.netMode != 1)
617 {
618 Chest chest = new Chest();
619 chest.x = baseCoords.X;
620 chest.y = baseCoords.Y;
621 for (int i = 0; i < 40; i++)
622 {
623 chest.item[i] = new Item();
624 }
625 Main.chest[num] = chest;
626 }
627 else
628 {
629 switch (type)
630 {
631 case 21:
632 NetMessage.SendData(34, -1, -1, null, 0, x, y, style);
633 break;
634 case 467:
635 NetMessage.SendData(34, -1, -1, null, 4, x, y, style);
636 break;
637 default:
638 NetMessage.SendData(34, -1, -1, null, 2, x, y, style);
639 break;
640 }
641 }
642 return num;
643 }
644
645 public static int CreateChest(int X, int Y, int id = -1)
646 {
647 int num = id;
648 if (num == -1)
649 {
650 num = FindEmptyChest(X, Y);
651 if (num == -1)
652 {
653 return -1;
654 }
655 if (Main.netMode == 1)
656 {
657 return num;
658 }
659 }
660 Main.chest[num] = new Chest();
661 Main.chest[num].x = X;
662 Main.chest[num].y = Y;
663 for (int i = 0; i < 40; i++)
664 {
665 Main.chest[num].item[i] = new Item();
666 }
667 return num;
668 }
669
670 public static bool CanDestroyChest(int X, int Y)
671 {
672 for (int i = 0; i < 8000; i++)
673 {
674 Chest chest = Main.chest[i];
675 if (chest == null || chest.x != X || chest.y != Y)
676 {
677 continue;
678 }
679 for (int j = 0; j < 40; j++)
680 {
681 if (chest.item[j] != null && chest.item[j].type > 0 && chest.item[j].stack > 0)
682 {
683 return false;
684 }
685 }
686 return true;
687 }
688 return true;
689 }
690
691 public static bool DestroyChest(int X, int Y)
692 {
693 for (int i = 0; i < 8000; i++)
694 {
695 Chest chest = Main.chest[i];
696 if (chest == null || chest.x != X || chest.y != Y)
697 {
698 continue;
699 }
700 for (int j = 0; j < 40; j++)
701 {
702 if (chest.item[j] != null && chest.item[j].type > 0 && chest.item[j].stack > 0)
703 {
704 return false;
705 }
706 }
707 Main.chest[i] = null;
708 if (Main.player[Main.myPlayer].chest == i)
709 {
710 Main.player[Main.myPlayer].chest = -1;
711 }
713 return true;
714 }
715 return true;
716 }
717
718 public static void DestroyChestDirect(int X, int Y, int id)
719 {
720 if (id < 0 || id >= Main.chest.Length)
721 {
722 return;
723 }
724 try
725 {
726 Chest chest = Main.chest[id];
727 if (chest != null && chest.x == X && chest.y == Y)
728 {
729 Main.chest[id] = null;
730 if (Main.player[Main.myPlayer].chest == id)
731 {
732 Main.player[Main.myPlayer].chest = -1;
733 }
735 }
736 }
737 catch
738 {
739 }
740 }
741
743 {
744 int num = Main.shopSellbackHelper.Remove(newItem);
745 if (num >= newItem.stack)
746 {
747 return;
748 }
749 for (int i = 0; i < 39; i++)
750 {
751 if (item[i] == null || item[i].type == 0)
752 {
753 item[i] = newItem.Clone();
754 item[i].favorited = false;
755 item[i].buyOnce = true;
756 item[i].stack -= num;
757 _ = item[i].value;
758 _ = 0;
759 break;
760 }
761 }
762 }
763
764 public static void SetupTravelShop_AddToShop(int it, ref int added, ref int count)
765 {
766 if (it == 0)
767 {
768 return;
769 }
770 added++;
771 Main.travelShop[count] = it;
772 count++;
773 if (it == 2260)
774 {
775 Main.travelShop[count] = 2261;
776 count++;
777 Main.travelShop[count] = 2262;
778 count++;
779 }
780 if (it == 4555)
781 {
782 Main.travelShop[count] = 4556;
783 count++;
784 Main.travelShop[count] = 4557;
785 count++;
786 }
787 if (it == 4321)
788 {
789 Main.travelShop[count] = 4322;
790 count++;
791 }
792 if (it == 4323)
793 {
794 Main.travelShop[count] = 4324;
795 count++;
796 Main.travelShop[count] = 4365;
797 count++;
798 }
799 if (it == 5390)
800 {
801 Main.travelShop[count] = 5386;
802 count++;
803 Main.travelShop[count] = 5387;
804 count++;
805 }
806 if (it == 4666)
807 {
808 Main.travelShop[count] = 4664;
809 count++;
810 Main.travelShop[count] = 4665;
811 count++;
812 }
813 if (it == 3637)
814 {
815 count--;
816 switch (Main.rand.Next(6))
817 {
818 case 0:
819 Main.travelShop[count++] = 3637;
820 Main.travelShop[count++] = 3642;
821 break;
822 case 1:
823 Main.travelShop[count++] = 3621;
824 Main.travelShop[count++] = 3622;
825 break;
826 case 2:
827 Main.travelShop[count++] = 3634;
828 Main.travelShop[count++] = 3639;
829 break;
830 case 3:
831 Main.travelShop[count++] = 3633;
832 Main.travelShop[count++] = 3638;
833 break;
834 case 4:
835 Main.travelShop[count++] = 3635;
836 Main.travelShop[count++] = 3640;
837 break;
838 case 5:
839 Main.travelShop[count++] = 3636;
840 Main.travelShop[count++] = 3641;
841 break;
842 }
843 }
844 }
845
846 public static bool SetupTravelShop_CanAddItemToShop(int it)
847 {
848 if (it == 0)
849 {
850 return false;
851 }
852 for (int i = 0; i < 40; i++)
853 {
854 if (Main.travelShop[i] == it)
855 {
856 return false;
857 }
858 if (it == 3637)
859 {
860 int num = Main.travelShop[i];
861 if ((uint)(num - 3621) <= 1u || (uint)(num - 3633) <= 9u)
862 {
863 return false;
864 }
865 }
866 }
867 return true;
868 }
869
870 public static void SetupTravelShop_GetPainting(Player playerWithHighestLuck, int[] rarity, ref int it, int minimumRarity = 0)
871 {
872 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && !Main.dontStarveWorld)
873 {
874 it = 5121;
875 }
876 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && !Main.dontStarveWorld)
877 {
878 it = 5122;
879 }
880 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && !Main.dontStarveWorld)
881 {
882 it = 5124;
883 }
884 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && !Main.dontStarveWorld)
885 {
886 it = 5123;
887 }
888 if (minimumRarity > 2)
889 {
890 return;
891 }
892 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && Main.hardMode && NPC.downedMoonlord)
893 {
894 it = 3596;
895 }
896 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && Main.hardMode && NPC.downedMartians)
897 {
898 it = 2865;
899 }
900 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && Main.hardMode && NPC.downedMartians)
901 {
902 it = 2866;
903 }
904 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && Main.hardMode && NPC.downedMartians)
905 {
906 it = 2867;
907 }
908 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedFrost)
909 {
910 it = 3055;
911 }
912 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedFrost)
913 {
914 it = 3056;
915 }
916 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedFrost)
917 {
918 it = 3057;
919 }
920 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedFrost)
921 {
922 it = 3058;
923 }
924 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedFrost)
925 {
926 it = 3059;
927 }
928 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && Main.hardMode && NPC.downedMoonlord)
929 {
930 it = 5243;
931 }
932 if (minimumRarity <= 1)
933 {
934 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0 && Main.dontStarveWorld)
935 {
936 it = 5121;
937 }
938 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0 && Main.dontStarveWorld)
939 {
940 it = 5122;
941 }
942 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0 && Main.dontStarveWorld)
943 {
944 it = 5124;
945 }
946 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0 && Main.dontStarveWorld)
947 {
948 it = 5123;
949 }
950 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
951 {
952 it = 5225;
953 }
954 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
955 {
956 it = 5229;
957 }
958 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
959 {
960 it = 5232;
961 }
962 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
963 {
964 it = 5389;
965 }
966 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
967 {
968 it = 5233;
969 }
970 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
971 {
972 it = 5241;
973 }
974 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
975 {
976 it = 5244;
977 }
978 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
979 {
980 it = 5242;
981 }
982 }
983 }
984
985 public static void SetupTravelShop_AdjustSlotRarities(int slotItemAttempts, ref int[] rarity)
986 {
987 if (rarity[5] > 1 && slotItemAttempts > 4700)
988 {
989 rarity[5] = 1;
990 }
991 if (rarity[4] > 1 && slotItemAttempts > 4600)
992 {
993 rarity[4] = 1;
994 }
995 if (rarity[3] > 1 && slotItemAttempts > 4500)
996 {
997 rarity[3] = 1;
998 }
999 if (rarity[2] > 1 && slotItemAttempts > 4400)
1000 {
1001 rarity[2] = 1;
1002 }
1003 if (rarity[1] > 1 && slotItemAttempts > 4300)
1004 {
1005 rarity[1] = 1;
1006 }
1007 if (rarity[0] > 1 && slotItemAttempts > 4200)
1008 {
1009 rarity[0] = 1;
1010 }
1011 }
1012
1013 public static void SetupTravelShop_GetItem(Player playerWithHighestLuck, int[] rarity, ref int it, int minimumRarity = 0)
1014 {
1015 if (minimumRarity <= 4 && playerWithHighestLuck.RollLuck(rarity[4]) == 0)
1016 {
1017 it = 3309;
1018 }
1019 if (minimumRarity <= 3 && playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1020 {
1021 it = 3314;
1022 }
1023 if (playerWithHighestLuck.RollLuck(rarity[5]) == 0)
1024 {
1025 it = 1987;
1026 }
1027 if (minimumRarity > 4)
1028 {
1029 return;
1030 }
1031 if (playerWithHighestLuck.RollLuck(rarity[4]) == 0 && Main.hardMode)
1032 {
1033 it = 2270;
1034 }
1035 if (playerWithHighestLuck.RollLuck(rarity[4]) == 0 && Main.hardMode)
1036 {
1037 it = 4760;
1038 }
1039 if (playerWithHighestLuck.RollLuck(rarity[4]) == 0)
1040 {
1041 it = 2278;
1042 }
1043 if (playerWithHighestLuck.RollLuck(rarity[4]) == 0)
1044 {
1045 it = 2271;
1046 }
1047 if (minimumRarity > 3)
1048 {
1049 return;
1050 }
1052 {
1053 it = 2223;
1054 }
1055 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1056 {
1057 it = 2272;
1058 }
1059 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1060 {
1061 it = 2276;
1062 }
1063 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1064 {
1065 it = 2284;
1066 }
1067 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1068 {
1069 it = 2285;
1070 }
1071 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1072 {
1073 it = 2286;
1074 }
1075 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1076 {
1077 it = 2287;
1078 }
1079 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1080 {
1081 it = 4744;
1082 }
1083 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && NPC.downedBoss3)
1084 {
1085 it = 2296;
1086 }
1087 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1088 {
1089 it = 3628;
1090 }
1091 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0 && Main.hardMode)
1092 {
1093 it = 4091;
1094 }
1095 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1096 {
1097 it = 4603;
1098 }
1099 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1100 {
1101 it = 4604;
1102 }
1103 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1104 {
1105 it = 5297;
1106 }
1107 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1108 {
1109 it = 4605;
1110 }
1111 if (playerWithHighestLuck.RollLuck(rarity[3]) == 0)
1112 {
1113 it = 4550;
1114 }
1115 if (minimumRarity > 2)
1116 {
1117 return;
1118 }
1119 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1120 {
1121 it = 2268;
1122 }
1123 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && WorldGen.shadowOrbSmashed)
1124 {
1125 it = 2269;
1126 }
1127 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1128 {
1129 it = 1988;
1130 }
1131 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1132 {
1133 it = 2275;
1134 }
1135 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1136 {
1137 it = 2279;
1138 }
1139 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1140 {
1141 it = 2277;
1142 }
1143 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1144 {
1145 it = 4555;
1146 }
1147 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1148 {
1149 it = 4321;
1150 }
1151 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1152 {
1153 it = 4323;
1154 }
1155 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1156 {
1157 it = 5390;
1158 }
1159 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1160 {
1161 it = 4549;
1162 }
1163 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1164 {
1165 it = 4561;
1166 }
1167 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1168 {
1169 it = 4774;
1170 }
1171 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1172 {
1173 it = 5136;
1174 }
1175 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1176 {
1177 it = 5305;
1178 }
1179 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1180 {
1181 it = 4562;
1182 }
1183 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1184 {
1185 it = 4558;
1186 }
1187 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1188 {
1189 it = 4559;
1190 }
1191 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1192 {
1193 it = 4563;
1194 }
1195 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0)
1196 {
1197 it = 4666;
1198 }
1199 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && (NPC.downedBoss1 || NPC.downedBoss2 || NPC.downedBoss3 || NPC.downedQueenBee || Main.hardMode))
1200 {
1201 it = 4347;
1202 if (Main.hardMode)
1203 {
1204 it = 4348;
1205 }
1206 }
1207 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedBoss1)
1208 {
1209 it = 3262;
1210 }
1211 if (playerWithHighestLuck.RollLuck(rarity[2]) == 0 && NPC.downedMechBossAny)
1212 {
1213 it = 3284;
1214 }
1215 if (minimumRarity > 1)
1216 {
1217 return;
1218 }
1219 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1220 {
1221 it = 2267;
1222 }
1223 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1224 {
1225 it = 2214;
1226 }
1227 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1228 {
1229 it = 2215;
1230 }
1231 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1232 {
1233 it = 2216;
1234 }
1235 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1236 {
1237 it = 2217;
1238 }
1239 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1240 {
1241 it = 3624;
1242 }
1243 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1244 {
1245 if (Main.remixWorld)
1246 {
1247 it = 671;
1248 }
1249 else
1250 {
1251 it = 2273;
1252 }
1253 }
1254 if (playerWithHighestLuck.RollLuck(rarity[1]) == 0)
1255 {
1256 it = 2274;
1257 }
1258 if (minimumRarity <= 0)
1259 {
1260 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1261 {
1262 it = 2266;
1263 }
1264 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1265 {
1266 it = 2281 + Main.rand.Next(3);
1267 }
1268 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1269 {
1270 it = 2258;
1271 }
1272 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1273 {
1274 it = 2242;
1275 }
1276 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1277 {
1278 it = 2260;
1279 }
1280 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1281 {
1282 it = 3637;
1283 }
1284 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1285 {
1286 it = 4420;
1287 }
1288 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1289 {
1290 it = 3119;
1291 }
1292 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1293 {
1294 it = 3118;
1295 }
1296 if (playerWithHighestLuck.RollLuck(rarity[0]) == 0)
1297 {
1298 it = 3099;
1299 }
1300 }
1301 }
1302
1303 public static void SetupTravelShop()
1304 {
1305 for (int i = 0; i < 40; i++)
1306 {
1307 Main.travelShop[i] = 0;
1308 }
1309 Player player = null;
1310 for (int j = 0; j < 255; j++)
1311 {
1313 if (player2.active && (player == null || player.luck < player2.luck))
1314 {
1315 player = player2;
1316 }
1317 }
1318 if (player == null)
1319 {
1320 player = new Player();
1321 }
1322 int num = Main.rand.Next(4, 7);
1323 if (player.RollLuck(4) == 0)
1324 {
1325 num++;
1326 }
1327 if (player.RollLuck(8) == 0)
1328 {
1329 num++;
1330 }
1331 if (player.RollLuck(16) == 0)
1332 {
1333 num++;
1334 }
1335 if (player.RollLuck(32) == 0)
1336 {
1337 num++;
1338 }
1339 if (Main.expertMode && player.RollLuck(2) == 0)
1340 {
1341 num++;
1342 }
1344 {
1345 num++;
1346 }
1348 {
1349 if (!Main.getGoodWorld)
1350 {
1351 num++;
1352 }
1353 num++;
1354 }
1355 int count = 0;
1356 int added = 0;
1357 int[] array = new int[6] { 100, 200, 300, 400, 500, 600 };
1358 int[] rarity = array;
1359 int num2 = 0;
1360 if (Main.hardMode)
1361 {
1362 int it = 0;
1363 while (num2 < 5000)
1364 {
1365 num2++;
1367 SetupTravelShop_GetItem(player, rarity, ref it, 2);
1369 {
1371 break;
1372 }
1373 }
1374 }
1375 while (added < num)
1376 {
1377 int it2 = 0;
1378 SetupTravelShop_GetItem(player, array, ref it2);
1380 {
1382 }
1383 }
1384 rarity = array;
1385 num2 = 0;
1386 int it3 = 0;
1387 while (num2 < 5000)
1388 {
1389 num2++;
1391 SetupTravelShop_GetPainting(player, rarity, ref it3);
1393 {
1395 break;
1396 }
1397 }
1398 }
1399
1400 public void SetupShop(int type)
1401 {
1402 bool flag = Main.LocalPlayer.currentShoppingSettings.PriceAdjustment <= 0.8999999761581421;
1403 Item[] array = item;
1404 for (int i = 0; i < 40; i++)
1405 {
1406 array[i] = new Item();
1407 }
1408 int num = 0;
1409 switch (type)
1410 {
1411 case 1:
1412 {
1413 array[num].SetDefaults(88);
1414 num++;
1415 array[num].SetDefaults(87);
1416 num++;
1417 array[num].SetDefaults(35);
1418 num++;
1419 array[num].SetDefaults(1991);
1420 num++;
1421 array[num].SetDefaults(3509);
1422 num++;
1423 array[num].SetDefaults(3506);
1424 num++;
1425 array[num].SetDefaults(8);
1426 num++;
1427 array[num].SetDefaults(28);
1428 num++;
1429 if (Main.hardMode)
1430 {
1431 array[num].SetDefaults(188);
1432 num++;
1433 }
1434 array[num].SetDefaults(110);
1435 num++;
1436 if (Main.hardMode)
1437 {
1438 array[num].SetDefaults(189);
1439 num++;
1440 }
1441 array[num].SetDefaults(40);
1442 num++;
1443 array[num].SetDefaults(42);
1444 num++;
1445 array[num].SetDefaults(965);
1446 num++;
1447 if (Main.player[Main.myPlayer].ZoneSnow)
1448 {
1449 array[num].SetDefaults(967);
1450 num++;
1451 }
1452 if (Main.player[Main.myPlayer].ZoneJungle)
1453 {
1454 array[num].SetDefaults(33);
1455 num++;
1456 }
1458 {
1459 array[num++].SetDefaults(4074);
1460 }
1461 if (Main.bloodMoon)
1462 {
1463 array[num].SetDefaults(279);
1464 num++;
1465 }
1466 if (!Main.dayTime)
1467 {
1468 array[num].SetDefaults(282);
1469 num++;
1470 }
1471 if (NPC.downedBoss3)
1472 {
1473 array[num].SetDefaults(346);
1474 num++;
1475 }
1476 if (Main.hardMode)
1477 {
1478 array[num].SetDefaults(488);
1479 num++;
1480 }
1481 for (int n = 0; n < 58; n++)
1482 {
1483 if (Main.player[Main.myPlayer].inventory[n].type == 930)
1484 {
1485 array[num].SetDefaults(931);
1486 num++;
1487 array[num].SetDefaults(1614);
1488 num++;
1489 break;
1490 }
1491 }
1492 array[num].SetDefaults(1786);
1493 num++;
1494 if (Main.hardMode)
1495 {
1496 array[num].SetDefaults(1348);
1497 num++;
1498 }
1499 if (Main.hardMode)
1500 {
1501 array[num].SetDefaults(3198);
1502 num++;
1503 }
1505 {
1506 array[num++].SetDefaults(4063);
1507 array[num++].SetDefaults(4673);
1508 }
1509 if (Main.player[Main.myPlayer].HasItem(3107))
1510 {
1511 array[num].SetDefaults(3108);
1512 num++;
1513 }
1514 break;
1515 }
1516 case 2:
1517 array[num].SetDefaults(97);
1518 num++;
1519 if (Main.bloodMoon || Main.hardMode)
1520 {
1521 if (WorldGen.SavedOreTiers.Silver == 168)
1522 {
1523 array[num].SetDefaults(4915);
1524 num++;
1525 }
1526 else
1527 {
1528 array[num].SetDefaults(278);
1529 num++;
1530 }
1531 }
1532 if ((NPC.downedBoss2 && !Main.dayTime) || Main.hardMode)
1533 {
1534 array[num].SetDefaults(47);
1535 num++;
1536 }
1537 array[num].SetDefaults(95);
1538 num++;
1539 array[num].SetDefaults(98);
1540 num++;
1541 if (Main.player[Main.myPlayer].ZoneGraveyard && NPC.downedBoss3)
1542 {
1543 array[num++].SetDefaults(4703);
1544 }
1545 if (!Main.dayTime)
1546 {
1547 array[num].SetDefaults(324);
1548 num++;
1549 }
1550 if (Main.hardMode)
1551 {
1552 array[num].SetDefaults(534);
1553 num++;
1554 }
1555 if (Main.hardMode)
1556 {
1557 array[num].SetDefaults(1432);
1558 num++;
1559 }
1560 if (Main.hardMode)
1561 {
1562 array[num].SetDefaults(2177);
1563 num++;
1564 }
1565 if (Main.player[Main.myPlayer].HasItem(1258))
1566 {
1567 array[num].SetDefaults(1261);
1568 num++;
1569 }
1570 if (Main.player[Main.myPlayer].HasItem(1835))
1571 {
1572 array[num].SetDefaults(1836);
1573 num++;
1574 }
1575 if (Main.player[Main.myPlayer].HasItem(3107))
1576 {
1577 array[num].SetDefaults(3108);
1578 num++;
1579 }
1580 if (Main.player[Main.myPlayer].HasItem(1782))
1581 {
1582 array[num].SetDefaults(1783);
1583 num++;
1584 }
1585 if (Main.player[Main.myPlayer].HasItem(1784))
1586 {
1587 array[num].SetDefaults(1785);
1588 num++;
1589 }
1590 if (Main.halloween)
1591 {
1592 array[num].SetDefaults(1736);
1593 num++;
1594 array[num].SetDefaults(1737);
1595 num++;
1596 array[num].SetDefaults(1738);
1597 num++;
1598 }
1599 break;
1600 case 3:
1601 if (Main.bloodMoon)
1602 {
1603 if (WorldGen.crimson)
1604 {
1605 if (!Main.remixWorld)
1606 {
1607 array[num].SetDefaults(2886);
1608 num++;
1609 }
1610 array[num].SetDefaults(2171);
1611 num++;
1612 array[num].SetDefaults(4508);
1613 num++;
1614 }
1615 else
1616 {
1617 if (!Main.remixWorld)
1618 {
1619 array[num].SetDefaults(67);
1620 num++;
1621 }
1622 array[num].SetDefaults(59);
1623 num++;
1624 array[num].SetDefaults(4504);
1625 num++;
1626 }
1627 }
1628 else
1629 {
1630 if (!Main.remixWorld)
1631 {
1632 array[num].SetDefaults(66);
1633 num++;
1634 }
1635 array[num].SetDefaults(62);
1636 num++;
1637 array[num].SetDefaults(63);
1638 num++;
1639 array[num].SetDefaults(745);
1640 num++;
1641 }
1642 if (Main.hardMode && Main.player[Main.myPlayer].ZoneGraveyard)
1643 {
1644 if (WorldGen.crimson)
1645 {
1646 array[num].SetDefaults(59);
1647 }
1648 else
1649 {
1650 array[num].SetDefaults(2171);
1651 }
1652 num++;
1653 }
1654 array[num].SetDefaults(27);
1655 num++;
1656 array[num].SetDefaults(5309);
1657 num++;
1658 array[num].SetDefaults(114);
1659 num++;
1660 array[num].SetDefaults(1828);
1661 num++;
1662 array[num].SetDefaults(747);
1663 num++;
1664 if (Main.hardMode)
1665 {
1666 array[num].SetDefaults(746);
1667 num++;
1668 }
1669 if (Main.hardMode)
1670 {
1671 array[num].SetDefaults(369);
1672 num++;
1673 }
1674 if (Main.hardMode)
1675 {
1676 array[num].SetDefaults(4505);
1677 num++;
1678 }
1679 if (Main.player[Main.myPlayer].ZoneUnderworldHeight)
1680 {
1681 array[num++].SetDefaults(5214);
1682 }
1683 else if (Main.player[Main.myPlayer].ZoneGlowshroom)
1684 {
1685 array[num++].SetDefaults(194);
1686 }
1687 if (Main.halloween)
1688 {
1689 array[num].SetDefaults(1853);
1690 num++;
1691 array[num].SetDefaults(1854);
1692 num++;
1693 }
1694 if (NPC.downedSlimeKing)
1695 {
1696 array[num].SetDefaults(3215);
1697 num++;
1698 }
1699 if (NPC.downedQueenBee)
1700 {
1701 array[num].SetDefaults(3216);
1702 num++;
1703 }
1704 if (NPC.downedBoss1)
1705 {
1706 array[num].SetDefaults(3219);
1707 num++;
1708 }
1709 if (NPC.downedBoss2)
1710 {
1711 if (WorldGen.crimson)
1712 {
1713 array[num].SetDefaults(3218);
1714 num++;
1715 }
1716 else
1717 {
1718 array[num].SetDefaults(3217);
1719 num++;
1720 }
1721 }
1722 if (NPC.downedBoss3)
1723 {
1724 array[num].SetDefaults(3220);
1725 num++;
1726 array[num].SetDefaults(3221);
1727 num++;
1728 }
1729 if (Main.hardMode)
1730 {
1731 array[num].SetDefaults(3222);
1732 num++;
1733 }
1734 array[num++].SetDefaults(4047);
1735 array[num++].SetDefaults(4045);
1736 array[num++].SetDefaults(4044);
1737 array[num++].SetDefaults(4043);
1738 array[num++].SetDefaults(4042);
1739 array[num++].SetDefaults(4046);
1740 array[num++].SetDefaults(4041);
1741 array[num++].SetDefaults(4241);
1742 array[num++].SetDefaults(4048);
1743 if (Main.hardMode)
1744 {
1745 switch (Main.moonPhase / 2)
1746 {
1747 case 0:
1748 array[num++].SetDefaults(4430);
1749 array[num++].SetDefaults(4431);
1750 array[num++].SetDefaults(4432);
1751 break;
1752 case 1:
1753 array[num++].SetDefaults(4433);
1754 array[num++].SetDefaults(4434);
1755 array[num++].SetDefaults(4435);
1756 break;
1757 case 2:
1758 array[num++].SetDefaults(4436);
1759 array[num++].SetDefaults(4437);
1760 array[num++].SetDefaults(4438);
1761 break;
1762 default:
1763 array[num++].SetDefaults(4439);
1764 array[num++].SetDefaults(4440);
1765 array[num++].SetDefaults(4441);
1766 break;
1767 }
1768 }
1769 break;
1770 case 4:
1771 {
1772 array[num].SetDefaults(168);
1773 num++;
1774 array[num].SetDefaults(166);
1775 num++;
1776 array[num].SetDefaults(167);
1777 num++;
1778 if (Main.hardMode)
1779 {
1780 array[num].SetDefaults(265);
1781 num++;
1782 }
1784 {
1785 array[num].SetDefaults(937);
1786 num++;
1787 }
1788 if (Main.hardMode)
1789 {
1790 array[num].SetDefaults(1347);
1791 num++;
1792 }
1793 for (int j = 0; j < 58; j++)
1794 {
1795 if (Main.player[Main.myPlayer].inventory[j].type == 4827)
1796 {
1797 array[num].SetDefaults(4827);
1798 num++;
1799 break;
1800 }
1801 }
1802 for (int k = 0; k < 58; k++)
1803 {
1804 if (Main.player[Main.myPlayer].inventory[k].type == 4824)
1805 {
1806 array[num].SetDefaults(4824);
1807 num++;
1808 break;
1809 }
1810 }
1811 for (int l = 0; l < 58; l++)
1812 {
1813 if (Main.player[Main.myPlayer].inventory[l].type == 4825)
1814 {
1815 array[num].SetDefaults(4825);
1816 num++;
1817 break;
1818 }
1819 }
1820 for (int m = 0; m < 58; m++)
1821 {
1822 if (Main.player[Main.myPlayer].inventory[m].type == 4826)
1823 {
1824 array[num].SetDefaults(4826);
1825 num++;
1826 break;
1827 }
1828 }
1829 break;
1830 }
1831 case 5:
1832 {
1833 array[num].SetDefaults(254);
1834 num++;
1835 array[num].SetDefaults(981);
1836 num++;
1837 if (Main.dayTime)
1838 {
1839 array[num].SetDefaults(242);
1840 num++;
1841 }
1842 if (Main.moonPhase == 0)
1843 {
1844 array[num].SetDefaults(245);
1845 num++;
1846 array[num].SetDefaults(246);
1847 num++;
1848 if (!Main.dayTime)
1849 {
1850 array[num++].SetDefaults(1288);
1851 array[num++].SetDefaults(1289);
1852 }
1853 }
1854 else if (Main.moonPhase == 1)
1855 {
1856 array[num].SetDefaults(325);
1857 num++;
1858 array[num].SetDefaults(326);
1859 num++;
1860 }
1861 array[num].SetDefaults(269);
1862 num++;
1863 array[num].SetDefaults(270);
1864 num++;
1865 array[num].SetDefaults(271);
1866 num++;
1867 if (NPC.downedClown)
1868 {
1869 array[num].SetDefaults(503);
1870 num++;
1871 array[num].SetDefaults(504);
1872 num++;
1873 array[num].SetDefaults(505);
1874 num++;
1875 }
1876 if (Main.bloodMoon)
1877 {
1878 array[num].SetDefaults(322);
1879 num++;
1880 if (!Main.dayTime)
1881 {
1882 array[num++].SetDefaults(3362);
1883 array[num++].SetDefaults(3363);
1884 }
1885 }
1887 {
1888 if (Main.dayTime)
1889 {
1890 array[num++].SetDefaults(2856);
1891 array[num++].SetDefaults(2858);
1892 }
1893 else
1894 {
1895 array[num++].SetDefaults(2857);
1896 array[num++].SetDefaults(2859);
1897 }
1898 }
1899 if (NPC.AnyNPCs(441))
1900 {
1901 array[num++].SetDefaults(3242);
1902 array[num++].SetDefaults(3243);
1903 array[num++].SetDefaults(3244);
1904 }
1905 if (Main.player[Main.myPlayer].ZoneGraveyard)
1906 {
1907 array[num++].SetDefaults(4685);
1908 array[num++].SetDefaults(4686);
1909 array[num++].SetDefaults(4704);
1910 array[num++].SetDefaults(4705);
1911 array[num++].SetDefaults(4706);
1912 array[num++].SetDefaults(4707);
1913 array[num++].SetDefaults(4708);
1914 array[num++].SetDefaults(4709);
1915 }
1916 if (Main.player[Main.myPlayer].ZoneSnow)
1917 {
1918 array[num].SetDefaults(1429);
1919 num++;
1920 }
1921 if (Main.halloween)
1922 {
1923 array[num].SetDefaults(1740);
1924 num++;
1925 }
1926 if (Main.hardMode)
1927 {
1928 if (Main.moonPhase == 2)
1929 {
1930 array[num].SetDefaults(869);
1931 num++;
1932 }
1933 if (Main.moonPhase == 3)
1934 {
1935 array[num].SetDefaults(4994);
1936 num++;
1937 array[num].SetDefaults(4997);
1938 num++;
1939 }
1940 if (Main.moonPhase == 4)
1941 {
1942 array[num].SetDefaults(864);
1943 num++;
1944 array[num].SetDefaults(865);
1945 num++;
1946 }
1947 if (Main.moonPhase == 5)
1948 {
1949 array[num].SetDefaults(4995);
1950 num++;
1951 array[num].SetDefaults(4998);
1952 num++;
1953 }
1954 if (Main.moonPhase == 6)
1955 {
1956 array[num].SetDefaults(873);
1957 num++;
1958 array[num].SetDefaults(874);
1959 num++;
1960 array[num].SetDefaults(875);
1961 num++;
1962 }
1963 if (Main.moonPhase == 7)
1964 {
1965 array[num].SetDefaults(4996);
1966 num++;
1967 array[num].SetDefaults(4999);
1968 num++;
1969 }
1970 }
1971 if (NPC.downedFrost)
1972 {
1973 if (Main.dayTime)
1974 {
1975 array[num].SetDefaults(1275);
1976 num++;
1977 }
1978 else
1979 {
1980 array[num].SetDefaults(1276);
1981 num++;
1982 }
1983 }
1984 if (Main.halloween)
1985 {
1986 array[num++].SetDefaults(3246);
1987 array[num++].SetDefaults(3247);
1988 }
1990 {
1991 array[num++].SetDefaults(3730);
1992 array[num++].SetDefaults(3731);
1993 array[num++].SetDefaults(3733);
1994 array[num++].SetDefaults(3734);
1995 array[num++].SetDefaults(3735);
1996 }
1997 int golferScoreAccumulated = Main.LocalPlayer.golferScoreAccumulated;
1999 {
2000 array[num].SetDefaults(4744);
2001 num++;
2002 }
2003 array[num].SetDefaults(5308);
2004 num++;
2005 break;
2006 }
2007 case 6:
2008 array[num].SetDefaults(128);
2009 num++;
2010 array[num].SetDefaults(486);
2011 num++;
2012 array[num].SetDefaults(398);
2013 num++;
2014 array[num].SetDefaults(84);
2015 num++;
2016 array[num].SetDefaults(407);
2017 num++;
2018 array[num].SetDefaults(161);
2019 num++;
2020 if (Main.hardMode)
2021 {
2022 array[num++].SetDefaults(5324);
2023 }
2024 break;
2025 case 7:
2026 array[num].SetDefaults(487);
2027 num++;
2028 array[num].SetDefaults(496);
2029 num++;
2030 array[num].SetDefaults(500);
2031 num++;
2032 array[num].SetDefaults(507);
2033 num++;
2034 array[num].SetDefaults(508);
2035 num++;
2036 array[num].SetDefaults(531);
2037 num++;
2038 array[num].SetDefaults(149);
2039 num++;
2040 array[num].SetDefaults(576);
2041 num++;
2042 array[num].SetDefaults(3186);
2043 num++;
2044 if (Main.halloween)
2045 {
2046 array[num].SetDefaults(1739);
2047 num++;
2048 }
2049 break;
2050 case 8:
2051 array[num].SetDefaults(509);
2052 num++;
2053 array[num].SetDefaults(850);
2054 num++;
2055 array[num].SetDefaults(851);
2056 num++;
2057 array[num].SetDefaults(3612);
2058 num++;
2059 array[num].SetDefaults(510);
2060 num++;
2061 array[num].SetDefaults(530);
2062 num++;
2063 array[num].SetDefaults(513);
2064 num++;
2065 array[num].SetDefaults(538);
2066 num++;
2067 array[num].SetDefaults(529);
2068 num++;
2069 array[num].SetDefaults(541);
2070 num++;
2071 array[num].SetDefaults(542);
2072 num++;
2073 array[num].SetDefaults(543);
2074 num++;
2075 array[num].SetDefaults(852);
2076 num++;
2077 array[num].SetDefaults(853);
2078 num++;
2079 array[num++].SetDefaults(4261);
2080 array[num++].SetDefaults(3707);
2081 array[num].SetDefaults(2739);
2082 num++;
2083 array[num].SetDefaults(849);
2084 num++;
2085 array[num++].SetDefaults(1263);
2086 array[num++].SetDefaults(3616);
2087 array[num++].SetDefaults(3725);
2088 array[num++].SetDefaults(2799);
2089 array[num++].SetDefaults(3619);
2090 array[num++].SetDefaults(3627);
2091 array[num++].SetDefaults(3629);
2092 array[num++].SetDefaults(585);
2093 array[num++].SetDefaults(584);
2094 array[num++].SetDefaults(583);
2095 array[num++].SetDefaults(4484);
2096 array[num++].SetDefaults(4485);
2097 if (NPC.AnyNPCs(369) && (Main.moonPhase == 1 || Main.moonPhase == 3 || Main.moonPhase == 5 || Main.moonPhase == 7))
2098 {
2099 array[num].SetDefaults(2295);
2100 num++;
2101 }
2102 break;
2103 case 9:
2104 {
2105 array[num].SetDefaults(588);
2106 num++;
2107 array[num].SetDefaults(589);
2108 num++;
2109 array[num].SetDefaults(590);
2110 num++;
2111 array[num].SetDefaults(597);
2112 num++;
2113 array[num].SetDefaults(598);
2114 num++;
2115 array[num].SetDefaults(596);
2116 num++;
2117 for (int num10 = 1873; num10 < 1906; num10++)
2118 {
2119 array[num].SetDefaults(num10);
2120 num++;
2121 }
2122 break;
2123 }
2124 case 10:
2126 {
2127 array[num].SetDefaults(756);
2128 num++;
2129 array[num].SetDefaults(787);
2130 num++;
2131 }
2132 array[num].SetDefaults(868);
2133 num++;
2134 if (NPC.downedPlantBoss)
2135 {
2136 array[num].SetDefaults(1551);
2137 num++;
2138 }
2139 array[num].SetDefaults(1181);
2140 num++;
2141 array[num++].SetDefaults(5231);
2142 if (!Main.remixWorld)
2143 {
2144 array[num++].SetDefaults(783);
2145 }
2146 break;
2147 case 11:
2148 if (!Main.remixWorld)
2149 {
2150 array[num++].SetDefaults(779);
2151 }
2152 if (Main.moonPhase >= 4 && Main.hardMode)
2153 {
2154 array[num++].SetDefaults(748);
2155 }
2156 else
2157 {
2158 array[num++].SetDefaults(839);
2159 array[num++].SetDefaults(840);
2160 array[num++].SetDefaults(841);
2161 }
2162 if (NPC.downedGolemBoss)
2163 {
2164 array[num++].SetDefaults(948);
2165 }
2166 if (Main.hardMode)
2167 {
2168 array[num++].SetDefaults(3623);
2169 }
2170 array[num++].SetDefaults(3603);
2171 array[num++].SetDefaults(3604);
2172 array[num++].SetDefaults(3607);
2173 array[num++].SetDefaults(3605);
2174 array[num++].SetDefaults(3606);
2175 array[num++].SetDefaults(3608);
2176 array[num++].SetDefaults(3618);
2177 array[num++].SetDefaults(3602);
2178 array[num++].SetDefaults(3663);
2179 array[num++].SetDefaults(3609);
2180 array[num++].SetDefaults(3610);
2182 {
2183 array[num++].SetDefaults(995);
2184 }
2186 {
2187 array[num++].SetDefaults(2203);
2188 }
2189 if (WorldGen.crimson)
2190 {
2191 array[num++].SetDefaults(2193);
2192 }
2193 else
2194 {
2195 array[num++].SetDefaults(4142);
2196 }
2197 if (Main.player[Main.myPlayer].ZoneGraveyard)
2198 {
2199 array[num++].SetDefaults(2192);
2200 }
2201 if (Main.player[Main.myPlayer].ZoneJungle)
2202 {
2203 array[num++].SetDefaults(2204);
2204 }
2205 if (Main.player[Main.myPlayer].ZoneSnow)
2206 {
2207 array[num++].SetDefaults(2198);
2208 }
2209 if ((double)(Main.player[Main.myPlayer].position.Y / 16f) < Main.worldSurface * 0.3499999940395355)
2210 {
2211 array[num++].SetDefaults(2197);
2212 }
2213 if (Main.player[Main.myPlayer].HasItem(832))
2214 {
2215 array[num++].SetDefaults(2196);
2216 }
2217 if (!Main.remixWorld)
2218 {
2219 if (Main.eclipse || Main.bloodMoon)
2220 {
2221 if (WorldGen.crimson)
2222 {
2223 array[num++].SetDefaults(784);
2224 }
2225 else
2226 {
2227 array[num++].SetDefaults(782);
2228 }
2229 }
2230 else if (Main.player[Main.myPlayer].ZoneHallow)
2231 {
2232 array[num++].SetDefaults(781);
2233 }
2234 else
2235 {
2236 array[num++].SetDefaults(780);
2237 }
2238 if (NPC.downedMoonlord)
2239 {
2240 array[num++].SetDefaults(5392);
2241 array[num++].SetDefaults(5393);
2242 array[num++].SetDefaults(5394);
2243 }
2244 }
2245 if (Main.hardMode)
2246 {
2247 array[num++].SetDefaults(1344);
2248 array[num++].SetDefaults(4472);
2249 }
2250 if (Main.halloween)
2251 {
2252 array[num++].SetDefaults(1742);
2253 }
2254 break;
2255 case 12:
2256 array[num].SetDefaults(1037);
2257 num++;
2258 array[num].SetDefaults(2874);
2259 num++;
2260 array[num].SetDefaults(1120);
2261 num++;
2262 if (Main.netMode == 1)
2263 {
2264 array[num].SetDefaults(1969);
2265 num++;
2266 }
2267 if (Main.halloween)
2268 {
2269 array[num].SetDefaults(3248);
2270 num++;
2271 array[num].SetDefaults(1741);
2272 num++;
2273 }
2274 if (Main.moonPhase == 0)
2275 {
2276 array[num].SetDefaults(2871);
2277 num++;
2278 array[num].SetDefaults(2872);
2279 num++;
2280 }
2281 if (!Main.dayTime && Main.bloodMoon)
2282 {
2283 array[num].SetDefaults(4663);
2284 num++;
2285 }
2286 if (Main.player[Main.myPlayer].ZoneGraveyard)
2287 {
2288 array[num].SetDefaults(4662);
2289 num++;
2290 }
2291 break;
2292 case 13:
2293 array[num].SetDefaults(859);
2294 num++;
2295 if (Main.LocalPlayer.golferScoreAccumulated > 500)
2296 {
2297 array[num++].SetDefaults(4743);
2298 }
2299 array[num].SetDefaults(1000);
2300 num++;
2301 array[num].SetDefaults(1168);
2302 num++;
2303 if (Main.dayTime)
2304 {
2305 array[num].SetDefaults(1449);
2306 num++;
2307 }
2308 else
2309 {
2310 array[num].SetDefaults(4552);
2311 num++;
2312 }
2313 array[num].SetDefaults(1345);
2314 num++;
2315 array[num].SetDefaults(1450);
2316 num++;
2317 array[num++].SetDefaults(3253);
2318 array[num++].SetDefaults(4553);
2319 array[num++].SetDefaults(2700);
2320 array[num++].SetDefaults(2738);
2321 array[num++].SetDefaults(4470);
2322 array[num++].SetDefaults(4681);
2323 if (Main.player[Main.myPlayer].ZoneGraveyard)
2324 {
2325 array[num++].SetDefaults(4682);
2326 }
2328 {
2329 array[num++].SetDefaults(4702);
2330 }
2331 if (Main.player[Main.myPlayer].HasItem(3548))
2332 {
2333 array[num].SetDefaults(3548);
2334 num++;
2335 }
2336 if (NPC.AnyNPCs(229))
2337 {
2338 array[num++].SetDefaults(3369);
2339 }
2340 if (NPC.downedGolemBoss)
2341 {
2342 array[num++].SetDefaults(3546);
2343 }
2344 if (Main.hardMode)
2345 {
2346 array[num].SetDefaults(3214);
2347 num++;
2348 array[num].SetDefaults(2868);
2349 num++;
2350 array[num].SetDefaults(970);
2351 num++;
2352 array[num].SetDefaults(971);
2353 num++;
2354 array[num].SetDefaults(972);
2355 num++;
2356 array[num].SetDefaults(973);
2357 num++;
2358 }
2359 array[num++].SetDefaults(4791);
2360 array[num++].SetDefaults(3747);
2361 array[num++].SetDefaults(3732);
2362 array[num++].SetDefaults(3742);
2364 {
2365 array[num++].SetDefaults(3749);
2366 array[num++].SetDefaults(3746);
2367 array[num++].SetDefaults(3739);
2368 array[num++].SetDefaults(3740);
2369 array[num++].SetDefaults(3741);
2370 array[num++].SetDefaults(3737);
2371 array[num++].SetDefaults(3738);
2372 array[num++].SetDefaults(3736);
2373 array[num++].SetDefaults(3745);
2374 array[num++].SetDefaults(3744);
2375 array[num++].SetDefaults(3743);
2376 }
2377 break;
2378 case 14:
2379 array[num].SetDefaults(771);
2380 num++;
2381 if (Main.bloodMoon)
2382 {
2383 array[num].SetDefaults(772);
2384 num++;
2385 }
2386 if (!Main.dayTime || Main.eclipse)
2387 {
2388 array[num].SetDefaults(773);
2389 num++;
2390 }
2391 if (Main.eclipse)
2392 {
2393 array[num].SetDefaults(774);
2394 num++;
2395 }
2396 if (NPC.downedMartians)
2397 {
2398 array[num++].SetDefaults(4445);
2399 if (Main.bloodMoon || Main.eclipse)
2400 {
2401 array[num++].SetDefaults(4446);
2402 }
2403 }
2404 if (Main.hardMode)
2405 {
2406 array[num].SetDefaults(4459);
2407 num++;
2408 }
2409 if (Main.hardMode)
2410 {
2411 array[num].SetDefaults(760);
2412 num++;
2413 }
2414 if (Main.hardMode)
2415 {
2416 array[num].SetDefaults(1346);
2417 num++;
2418 }
2419 if (Main.hardMode)
2420 {
2421 array[num].SetDefaults(5451);
2422 num++;
2423 }
2424 if (Main.hardMode)
2425 {
2426 array[num].SetDefaults(5452);
2427 num++;
2428 }
2429 if (Main.player[Main.myPlayer].ZoneGraveyard)
2430 {
2431 array[num].SetDefaults(4409);
2432 num++;
2433 }
2434 if (Main.player[Main.myPlayer].ZoneGraveyard)
2435 {
2436 array[num].SetDefaults(4392);
2437 num++;
2438 }
2439 if (Main.halloween)
2440 {
2441 array[num].SetDefaults(1743);
2442 num++;
2443 array[num].SetDefaults(1744);
2444 num++;
2445 array[num].SetDefaults(1745);
2446 num++;
2447 }
2448 if (NPC.downedMartians)
2449 {
2450 array[num++].SetDefaults(2862);
2451 array[num++].SetDefaults(3109);
2452 }
2453 if (Main.player[Main.myPlayer].HasItem(3384) || Main.player[Main.myPlayer].HasItem(3664))
2454 {
2455 array[num].SetDefaults(3664);
2456 num++;
2457 }
2458 break;
2459 case 15:
2460 {
2461 array[num].SetDefaults(1071);
2462 num++;
2463 array[num].SetDefaults(1072);
2464 num++;
2465 array[num].SetDefaults(1100);
2466 num++;
2467 for (int num2 = 1073; num2 <= 1084; num2++)
2468 {
2469 array[num].SetDefaults(num2);
2470 num++;
2471 }
2472 array[num].SetDefaults(1097);
2473 num++;
2474 array[num].SetDefaults(1099);
2475 num++;
2476 array[num].SetDefaults(1098);
2477 num++;
2478 array[num].SetDefaults(1966);
2479 num++;
2480 if (Main.hardMode)
2481 {
2482 array[num].SetDefaults(1967);
2483 num++;
2484 array[num].SetDefaults(1968);
2485 num++;
2486 }
2487 if (Main.player[Main.myPlayer].ZoneGraveyard)
2488 {
2489 array[num].SetDefaults(4668);
2490 num++;
2491 if (NPC.downedPlantBoss)
2492 {
2493 array[num].SetDefaults(5344);
2494 num++;
2495 }
2496 }
2497 break;
2498 }
2499 case 25:
2500 {
2501 if (Main.xMas)
2502 {
2503 int num3 = 1948;
2504 while (num3 <= 1957 && num < 39)
2505 {
2506 array[num].SetDefaults(num3);
2507 num3++;
2508 num++;
2509 }
2510 }
2511 int num4 = 2158;
2512 while (num4 <= 2160 && num < 39)
2513 {
2514 array[num].SetDefaults(num4);
2515 num4++;
2516 num++;
2517 }
2518 int num5 = 2008;
2519 while (num5 <= 2014 && num < 39)
2520 {
2521 array[num].SetDefaults(num5);
2522 num5++;
2523 num++;
2524 }
2525 if (!Main.player[Main.myPlayer].ZoneGraveyard)
2526 {
2527 array[num].SetDefaults(1490);
2528 num++;
2529 if (Main.moonPhase <= 1)
2530 {
2531 array[num].SetDefaults(1481);
2532 num++;
2533 }
2534 else if (Main.moonPhase <= 3)
2535 {
2536 array[num].SetDefaults(1482);
2537 num++;
2538 }
2539 else if (Main.moonPhase <= 5)
2540 {
2541 array[num].SetDefaults(1483);
2542 num++;
2543 }
2544 else
2545 {
2546 array[num].SetDefaults(1484);
2547 num++;
2548 }
2549 }
2550 if (Main.player[Main.myPlayer].ShoppingZone_Forest)
2551 {
2552 array[num].SetDefaults(5245);
2553 num++;
2554 }
2555 if (Main.player[Main.myPlayer].ZoneCrimson)
2556 {
2557 array[num].SetDefaults(1492);
2558 num++;
2559 }
2560 if (Main.player[Main.myPlayer].ZoneCorrupt)
2561 {
2562 array[num].SetDefaults(1488);
2563 num++;
2564 }
2565 if (Main.player[Main.myPlayer].ZoneHallow)
2566 {
2567 array[num].SetDefaults(1489);
2568 num++;
2569 }
2570 if (Main.player[Main.myPlayer].ZoneJungle)
2571 {
2572 array[num].SetDefaults(1486);
2573 num++;
2574 }
2575 if (Main.player[Main.myPlayer].ZoneSnow)
2576 {
2577 array[num].SetDefaults(1487);
2578 num++;
2579 }
2580 if (Main.player[Main.myPlayer].ZoneDesert)
2581 {
2582 array[num].SetDefaults(1491);
2583 num++;
2584 }
2585 if (Main.bloodMoon)
2586 {
2587 array[num].SetDefaults(1493);
2588 num++;
2589 }
2590 if (!Main.player[Main.myPlayer].ZoneGraveyard)
2591 {
2592 if ((double)(Main.player[Main.myPlayer].position.Y / 16f) < Main.worldSurface * 0.3499999940395355)
2593 {
2594 array[num].SetDefaults(1485);
2595 num++;
2596 }
2597 if ((double)(Main.player[Main.myPlayer].position.Y / 16f) < Main.worldSurface * 0.3499999940395355 && Main.hardMode)
2598 {
2599 array[num].SetDefaults(1494);
2600 num++;
2601 }
2602 }
2603 if (Main.IsItStorming)
2604 {
2605 array[num].SetDefaults(5251);
2606 num++;
2607 }
2608 if (Main.player[Main.myPlayer].ZoneGraveyard)
2609 {
2610 array[num].SetDefaults(4723);
2611 num++;
2612 array[num].SetDefaults(4724);
2613 num++;
2614 array[num].SetDefaults(4725);
2615 num++;
2616 array[num].SetDefaults(4726);
2617 num++;
2618 array[num].SetDefaults(4727);
2619 num++;
2620 array[num].SetDefaults(5257);
2621 num++;
2622 array[num].SetDefaults(4728);
2623 num++;
2624 array[num].SetDefaults(4729);
2625 num++;
2626 }
2627 break;
2628 }
2629 case 16:
2630 array[num++].SetDefaults(1430);
2631 array[num++].SetDefaults(986);
2632 if (NPC.AnyNPCs(108))
2633 {
2634 array[num++].SetDefaults(2999);
2635 }
2636 if (!Main.dayTime)
2637 {
2638 array[num++].SetDefaults(1158);
2639 }
2641 {
2642 array[num++].SetDefaults(1159);
2643 array[num++].SetDefaults(1160);
2644 array[num++].SetDefaults(1161);
2645 if (Main.player[Main.myPlayer].ZoneJungle)
2646 {
2647 array[num++].SetDefaults(1167);
2648 }
2649 array[num++].SetDefaults(1339);
2650 }
2651 if (Main.hardMode && Main.player[Main.myPlayer].ZoneJungle)
2652 {
2653 array[num++].SetDefaults(1171);
2655 {
2656 array[num++].SetDefaults(1162);
2657 }
2658 }
2659 array[num++].SetDefaults(909);
2660 array[num++].SetDefaults(910);
2661 array[num++].SetDefaults(940);
2662 array[num++].SetDefaults(941);
2663 array[num++].SetDefaults(942);
2664 array[num++].SetDefaults(943);
2665 array[num++].SetDefaults(944);
2666 array[num++].SetDefaults(945);
2667 array[num++].SetDefaults(4922);
2668 array[num++].SetDefaults(4417);
2669 if (Main.player[Main.myPlayer].HasItem(1835))
2670 {
2671 array[num++].SetDefaults(1836);
2672 }
2673 if (Main.player[Main.myPlayer].HasItem(1258))
2674 {
2675 array[num++].SetDefaults(1261);
2676 }
2677 if (Main.halloween)
2678 {
2679 array[num++].SetDefaults(1791);
2680 }
2681 break;
2682 case 17:
2683 {
2684 array[num].SetDefaults(928);
2685 num++;
2686 array[num].SetDefaults(929);
2687 num++;
2688 array[num].SetDefaults(876);
2689 num++;
2690 array[num].SetDefaults(877);
2691 num++;
2692 array[num].SetDefaults(878);
2693 num++;
2694 array[num].SetDefaults(2434);
2695 num++;
2696 int num6 = (int)((Main.screenPosition.X + (float)(Main.screenWidth / 2)) / 16f);
2697 if ((double)(Main.screenPosition.Y / 16f) < Main.worldSurface + 10.0 && (num6 < 380 || num6 > Main.maxTilesX - 380))
2698 {
2699 array[num].SetDefaults(1180);
2700 num++;
2701 }
2703 {
2704 array[num].SetDefaults(1337);
2705 num++;
2706 }
2707 break;
2708 }
2709 case 18:
2710 {
2711 array[num].SetDefaults(1990);
2712 num++;
2713 array[num].SetDefaults(1979);
2714 num++;
2715 if (Main.player[Main.myPlayer].statLifeMax >= 400)
2716 {
2717 array[num].SetDefaults(1977);
2718 num++;
2719 }
2720 if (Main.player[Main.myPlayer].statManaMax >= 200)
2721 {
2722 array[num].SetDefaults(1978);
2723 num++;
2724 }
2725 long num8 = 0L;
2726 for (int num9 = 0; num9 < 54; num9++)
2727 {
2728 if (Main.player[Main.myPlayer].inventory[num9].type == 71)
2729 {
2730 num8 += Main.player[Main.myPlayer].inventory[num9].stack;
2731 }
2732 if (Main.player[Main.myPlayer].inventory[num9].type == 72)
2733 {
2734 num8 += Main.player[Main.myPlayer].inventory[num9].stack * 100;
2735 }
2736 if (Main.player[Main.myPlayer].inventory[num9].type == 73)
2737 {
2738 num8 += Main.player[Main.myPlayer].inventory[num9].stack * 10000;
2739 }
2740 if (Main.player[Main.myPlayer].inventory[num9].type == 74)
2741 {
2742 num8 += Main.player[Main.myPlayer].inventory[num9].stack * 1000000;
2743 }
2744 }
2745 if (num8 >= 1000000)
2746 {
2747 array[num].SetDefaults(1980);
2748 num++;
2749 }
2750 if ((Main.moonPhase % 2 == 0 && Main.dayTime) || (Main.moonPhase % 2 == 1 && !Main.dayTime))
2751 {
2752 array[num].SetDefaults(1981);
2753 num++;
2754 }
2755 if (Main.player[Main.myPlayer].team != 0)
2756 {
2757 array[num].SetDefaults(1982);
2758 num++;
2759 }
2760 if (Main.hardMode)
2761 {
2762 array[num].SetDefaults(1983);
2763 num++;
2764 }
2765 if (NPC.AnyNPCs(208))
2766 {
2767 array[num].SetDefaults(1984);
2768 num++;
2769 }
2771 {
2772 array[num].SetDefaults(1985);
2773 num++;
2774 }
2776 {
2777 array[num].SetDefaults(1986);
2778 num++;
2779 }
2781 {
2782 array[num].SetDefaults(2863);
2783 num++;
2784 array[num].SetDefaults(3259);
2785 num++;
2786 }
2787 array[num++].SetDefaults(5104);
2788 break;
2789 }
2790 case 19:
2791 {
2792 for (int num11 = 0; num11 < 40; num11++)
2793 {
2794 if (Main.travelShop[num11] != 0)
2795 {
2796 array[num].netDefaults(Main.travelShop[num11]);
2797 num++;
2798 }
2799 }
2800 break;
2801 }
2802 case 20:
2803 if (Main.moonPhase == 0)
2804 {
2805 array[num].SetDefaults(284);
2806 num++;
2807 }
2808 if (Main.moonPhase == 1)
2809 {
2810 array[num].SetDefaults(946);
2811 num++;
2812 }
2813 if (Main.moonPhase == 2 && !Main.remixWorld)
2814 {
2815 array[num].SetDefaults(3069);
2816 num++;
2817 }
2818 if (Main.moonPhase == 2 && Main.remixWorld)
2819 {
2820 array[num].SetDefaults(517);
2821 num++;
2822 }
2823 if (Main.moonPhase == 3)
2824 {
2825 array[num].SetDefaults(4341);
2826 num++;
2827 }
2828 if (Main.moonPhase == 4)
2829 {
2830 array[num].SetDefaults(285);
2831 num++;
2832 }
2833 if (Main.moonPhase == 5)
2834 {
2835 array[num].SetDefaults(953);
2836 num++;
2837 }
2838 if (Main.moonPhase == 6)
2839 {
2840 array[num].SetDefaults(3068);
2841 num++;
2842 }
2843 if (Main.moonPhase == 7)
2844 {
2845 array[num].SetDefaults(3084);
2846 num++;
2847 }
2848 if (Main.moonPhase % 2 == 0)
2849 {
2850 array[num].SetDefaults(3001);
2851 num++;
2852 }
2853 if (Main.moonPhase % 2 != 0)
2854 {
2855 array[num].SetDefaults(28);
2856 num++;
2857 }
2858 if (Main.moonPhase % 2 != 0 && Main.hardMode)
2859 {
2860 array[num].SetDefaults(188);
2861 num++;
2862 }
2863 if (!Main.dayTime || Main.moonPhase == 0)
2864 {
2865 array[num].SetDefaults(3002);
2866 num++;
2867 if (Main.player[Main.myPlayer].HasItem(930))
2868 {
2869 array[num].SetDefaults(5377);
2870 num++;
2871 }
2872 }
2873 else if (Main.dayTime && Main.moonPhase != 0)
2874 {
2875 array[num].SetDefaults(282);
2876 num++;
2877 }
2878 if (Main.time % 60.0 * 60.0 * 6.0 <= 10800.0)
2879 {
2880 array[num].SetDefaults(3004);
2881 }
2882 else
2883 {
2884 array[num].SetDefaults(8);
2885 }
2886 num++;
2887 if (Main.moonPhase == 0 || Main.moonPhase == 1 || Main.moonPhase == 4 || Main.moonPhase == 5)
2888 {
2889 array[num].SetDefaults(3003);
2890 }
2891 else
2892 {
2893 array[num].SetDefaults(40);
2894 }
2895 num++;
2896 if (Main.moonPhase % 4 == 0)
2897 {
2898 array[num].SetDefaults(3310);
2899 }
2900 else if (Main.moonPhase % 4 == 1)
2901 {
2902 array[num].SetDefaults(3313);
2903 }
2904 else if (Main.moonPhase % 4 == 2)
2905 {
2906 array[num].SetDefaults(3312);
2907 }
2908 else
2909 {
2910 array[num].SetDefaults(3311);
2911 }
2912 num++;
2913 array[num].SetDefaults(166);
2914 num++;
2915 array[num].SetDefaults(965);
2916 num++;
2917 if (Main.hardMode)
2918 {
2919 if (Main.moonPhase < 4)
2920 {
2921 array[num].SetDefaults(3316);
2922 }
2923 else
2924 {
2925 array[num].SetDefaults(3315);
2926 }
2927 num++;
2928 array[num].SetDefaults(3334);
2929 num++;
2930 if (Main.bloodMoon)
2931 {
2932 array[num].SetDefaults(3258);
2933 num++;
2934 }
2935 }
2936 if (Main.moonPhase == 0 && !Main.dayTime)
2937 {
2938 array[num].SetDefaults(3043);
2939 num++;
2940 }
2941 if (!Main.player[Main.myPlayer].ateArtisanBread && Main.moonPhase >= 3 && Main.moonPhase <= 5)
2942 {
2943 array[num].SetDefaults(5326);
2944 num++;
2945 }
2946 break;
2947 case 21:
2948 {
2949 bool flag2 = Main.hardMode && NPC.downedMechBossAny;
2950 bool num7 = Main.hardMode && NPC.downedGolemBoss;
2951 array[num].SetDefaults(353);
2952 num++;
2953 array[num].SetDefaults(3828);
2954 if (num7)
2955 {
2956 array[num].shopCustomPrice = Item.buyPrice(0, 4);
2957 }
2958 else if (flag2)
2959 {
2960 array[num].shopCustomPrice = Item.buyPrice(0, 1);
2961 }
2962 else
2963 {
2964 array[num].shopCustomPrice = Item.buyPrice(0, 0, 25);
2965 }
2966 num++;
2967 array[num].SetDefaults(3816);
2968 num++;
2969 array[num].SetDefaults(3813);
2970 array[num].shopCustomPrice = 50;
2971 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2972 num++;
2973 num = 10;
2974 array[num].SetDefaults(3818);
2975 array[num].shopCustomPrice = 5;
2976 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2977 num++;
2978 array[num].SetDefaults(3824);
2979 array[num].shopCustomPrice = 5;
2980 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2981 num++;
2982 array[num].SetDefaults(3832);
2983 array[num].shopCustomPrice = 5;
2984 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2985 num++;
2986 array[num].SetDefaults(3829);
2987 array[num].shopCustomPrice = 5;
2988 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2989 if (flag2)
2990 {
2991 num = 20;
2992 array[num].SetDefaults(3819);
2993 array[num].shopCustomPrice = 15;
2994 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2995 num++;
2996 array[num].SetDefaults(3825);
2997 array[num].shopCustomPrice = 15;
2998 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
2999 num++;
3000 array[num].SetDefaults(3833);
3001 array[num].shopCustomPrice = 15;
3002 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3003 num++;
3004 array[num].SetDefaults(3830);
3005 array[num].shopCustomPrice = 15;
3006 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3007 }
3008 if (num7)
3009 {
3010 num = 30;
3011 array[num].SetDefaults(3820);
3012 array[num].shopCustomPrice = 60;
3013 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3014 num++;
3015 array[num].SetDefaults(3826);
3016 array[num].shopCustomPrice = 60;
3017 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3018 num++;
3019 array[num].SetDefaults(3834);
3020 array[num].shopCustomPrice = 60;
3021 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3022 num++;
3023 array[num].SetDefaults(3831);
3024 array[num].shopCustomPrice = 60;
3025 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3026 }
3027 if (flag2)
3028 {
3029 num = 4;
3030 array[num].SetDefaults(3800);
3031 array[num].shopCustomPrice = 15;
3032 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3033 num++;
3034 array[num].SetDefaults(3801);
3035 array[num].shopCustomPrice = 15;
3036 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3037 num++;
3038 array[num].SetDefaults(3802);
3039 array[num].shopCustomPrice = 15;
3040 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3041 num++;
3042 num = 14;
3043 array[num].SetDefaults(3797);
3044 array[num].shopCustomPrice = 15;
3045 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3046 num++;
3047 array[num].SetDefaults(3798);
3048 array[num].shopCustomPrice = 15;
3049 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3050 num++;
3051 array[num].SetDefaults(3799);
3052 array[num].shopCustomPrice = 15;
3053 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3054 num++;
3055 num = 24;
3056 array[num].SetDefaults(3803);
3057 array[num].shopCustomPrice = 15;
3058 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3059 num++;
3060 array[num].SetDefaults(3804);
3061 array[num].shopCustomPrice = 15;
3062 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3063 num++;
3064 array[num].SetDefaults(3805);
3065 array[num].shopCustomPrice = 15;
3066 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3067 num++;
3068 num = 34;
3069 array[num].SetDefaults(3806);
3070 array[num].shopCustomPrice = 15;
3071 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3072 num++;
3073 array[num].SetDefaults(3807);
3074 array[num].shopCustomPrice = 15;
3075 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3076 num++;
3077 array[num].SetDefaults(3808);
3078 array[num].shopCustomPrice = 15;
3079 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3080 num++;
3081 }
3082 if (num7)
3083 {
3084 num = 7;
3085 array[num].SetDefaults(3871);
3086 array[num].shopCustomPrice = 50;
3087 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3088 num++;
3089 array[num].SetDefaults(3872);
3090 array[num].shopCustomPrice = 50;
3091 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3092 num++;
3093 array[num].SetDefaults(3873);
3094 array[num].shopCustomPrice = 50;
3095 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3096 num++;
3097 num = 17;
3098 array[num].SetDefaults(3874);
3099 array[num].shopCustomPrice = 50;
3100 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3101 num++;
3102 array[num].SetDefaults(3875);
3103 array[num].shopCustomPrice = 50;
3104 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3105 num++;
3106 array[num].SetDefaults(3876);
3107 array[num].shopCustomPrice = 50;
3108 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3109 num++;
3110 num = 27;
3111 array[num].SetDefaults(3877);
3112 array[num].shopCustomPrice = 50;
3113 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3114 num++;
3115 array[num].SetDefaults(3878);
3116 array[num].shopCustomPrice = 50;
3117 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3118 num++;
3119 array[num].SetDefaults(3879);
3120 array[num].shopCustomPrice = 50;
3121 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3122 num++;
3123 num = 37;
3124 array[num].SetDefaults(3880);
3125 array[num].shopCustomPrice = 50;
3126 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3127 num++;
3128 array[num].SetDefaults(3881);
3129 array[num].shopCustomPrice = 50;
3130 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3131 num++;
3132 array[num].SetDefaults(3882);
3133 array[num].shopCustomPrice = 50;
3134 array[num].shopSpecialCurrency = CustomCurrencyID.DefenderMedals;
3135 num++;
3136 }
3137 num = ((!num7) ? ((!flag2) ? 4 : 30) : 39);
3138 break;
3139 }
3140 case 22:
3141 {
3142 array[num++].SetDefaults(4587);
3143 array[num++].SetDefaults(4590);
3144 array[num++].SetDefaults(4589);
3145 array[num++].SetDefaults(4588);
3146 array[num++].SetDefaults(4083);
3147 array[num++].SetDefaults(4084);
3148 array[num++].SetDefaults(4085);
3149 array[num++].SetDefaults(4086);
3150 array[num++].SetDefaults(4087);
3151 array[num++].SetDefaults(4088);
3152 int golferScoreAccumulated2 = Main.LocalPlayer.golferScoreAccumulated;
3153 if (golferScoreAccumulated2 > 500)
3154 {
3155 array[num].SetDefaults(4039);
3156 num++;
3157 array[num].SetDefaults(4094);
3158 num++;
3159 array[num].SetDefaults(4093);
3160 num++;
3161 array[num].SetDefaults(4092);
3162 num++;
3163 }
3164 array[num++].SetDefaults(4089);
3165 array[num++].SetDefaults(3989);
3166 array[num++].SetDefaults(4095);
3167 array[num++].SetDefaults(4040);
3168 array[num++].SetDefaults(4319);
3169 array[num++].SetDefaults(4320);
3170 if (golferScoreAccumulated2 > 1000)
3171 {
3172 array[num].SetDefaults(4591);
3173 num++;
3174 array[num].SetDefaults(4594);
3175 num++;
3176 array[num].SetDefaults(4593);
3177 num++;
3178 array[num].SetDefaults(4592);
3179 num++;
3180 }
3181 array[num++].SetDefaults(4135);
3182 array[num++].SetDefaults(4138);
3183 array[num++].SetDefaults(4136);
3184 array[num++].SetDefaults(4137);
3185 array[num++].SetDefaults(4049);
3186 if (golferScoreAccumulated2 > 500)
3187 {
3188 array[num].SetDefaults(4265);
3189 num++;
3190 }
3191 if (golferScoreAccumulated2 > 2000)
3192 {
3193 array[num].SetDefaults(4595);
3194 num++;
3195 array[num].SetDefaults(4598);
3196 num++;
3197 array[num].SetDefaults(4597);
3198 num++;
3199 array[num].SetDefaults(4596);
3200 num++;
3201 if (NPC.downedBoss3)
3202 {
3203 array[num].SetDefaults(4264);
3204 num++;
3205 }
3206 }
3207 if (golferScoreAccumulated2 > 500)
3208 {
3209 array[num].SetDefaults(4599);
3210 num++;
3211 }
3212 if (golferScoreAccumulated2 >= 1000)
3213 {
3214 array[num].SetDefaults(4600);
3215 num++;
3216 }
3217 if (golferScoreAccumulated2 >= 2000)
3218 {
3219 array[num].SetDefaults(4601);
3220 num++;
3221 }
3222 if (golferScoreAccumulated2 >= 2000)
3223 {
3224 if (Main.moonPhase == 0 || Main.moonPhase == 1)
3225 {
3226 array[num].SetDefaults(4658);
3227 num++;
3228 }
3229 else if (Main.moonPhase == 2 || Main.moonPhase == 3)
3230 {
3231 array[num].SetDefaults(4659);
3232 num++;
3233 }
3234 else if (Main.moonPhase == 4 || Main.moonPhase == 5)
3235 {
3236 array[num].SetDefaults(4660);
3237 num++;
3238 }
3239 else if (Main.moonPhase == 6 || Main.moonPhase == 7)
3240 {
3241 array[num].SetDefaults(4661);
3242 num++;
3243 }
3244 }
3245 break;
3246 }
3247 case 23:
3248 {
3251 {
3252 array[num++].SetDefaults(4776);
3253 }
3254 array[num++].SetDefaults(4767);
3255 array[num++].SetDefaults(4759);
3256 if (Main.moonPhase == 0 && !Main.dayTime)
3257 {
3258 array[num++].SetDefaults(5253);
3259 }
3260 if (bestiaryProgressReport.CompletionPercent >= 0.1f)
3261 {
3262 array[num++].SetDefaults(4672);
3263 }
3264 array[num++].SetDefaults(4829);
3265 if (bestiaryProgressReport.CompletionPercent >= 0.25f)
3266 {
3267 array[num++].SetDefaults(4830);
3268 }
3269 if (bestiaryProgressReport.CompletionPercent >= 0.45f)
3270 {
3271 array[num++].SetDefaults(4910);
3272 }
3273 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3274 {
3275 array[num++].SetDefaults(4871);
3276 }
3277 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3278 {
3279 array[num++].SetDefaults(4907);
3280 }
3282 {
3283 array[num++].SetDefaults(4677);
3284 }
3285 if (bestiaryProgressReport.CompletionPercent >= 0.1f)
3286 {
3287 array[num++].SetDefaults(4676);
3288 }
3289 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3290 {
3291 array[num++].SetDefaults(4762);
3292 }
3293 if (bestiaryProgressReport.CompletionPercent >= 0.25f)
3294 {
3295 array[num++].SetDefaults(4716);
3296 }
3297 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3298 {
3299 array[num++].SetDefaults(4785);
3300 }
3301 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3302 {
3303 array[num++].SetDefaults(4786);
3304 }
3305 if (bestiaryProgressReport.CompletionPercent >= 0.3f)
3306 {
3307 array[num++].SetDefaults(4787);
3308 }
3309 if (bestiaryProgressReport.CompletionPercent >= 0.3f && Main.hardMode)
3310 {
3311 array[num++].SetDefaults(4788);
3312 }
3313 if (bestiaryProgressReport.CompletionPercent >= 0.35f)
3314 {
3315 array[num++].SetDefaults(4763);
3316 }
3317 if (bestiaryProgressReport.CompletionPercent >= 0.4f)
3318 {
3319 array[num++].SetDefaults(4955);
3320 }
3321 if (Main.hardMode && Main.bloodMoon)
3322 {
3323 array[num++].SetDefaults(4736);
3324 }
3325 if (NPC.downedPlantBoss)
3326 {
3327 array[num++].SetDefaults(4701);
3328 }
3329 if (bestiaryProgressReport.CompletionPercent >= 0.5f)
3330 {
3331 array[num++].SetDefaults(4765);
3332 }
3333 if (bestiaryProgressReport.CompletionPercent >= 0.5f)
3334 {
3335 array[num++].SetDefaults(4766);
3336 }
3337 if (bestiaryProgressReport.CompletionPercent >= 0.5f)
3338 {
3339 array[num++].SetDefaults(5285);
3340 }
3341 if (bestiaryProgressReport.CompletionPercent >= 0.5f)
3342 {
3343 array[num++].SetDefaults(4777);
3344 }
3345 if (bestiaryProgressReport.CompletionPercent >= 0.7f)
3346 {
3347 array[num++].SetDefaults(4735);
3348 }
3349 if (bestiaryProgressReport.CompletionPercent >= 1f)
3350 {
3351 array[num++].SetDefaults(4951);
3352 }
3353 switch (Main.moonPhase)
3354 {
3355 case 0:
3356 case 1:
3357 array[num++].SetDefaults(4768);
3358 array[num++].SetDefaults(4769);
3359 break;
3360 case 2:
3361 case 3:
3362 array[num++].SetDefaults(4770);
3363 array[num++].SetDefaults(4771);
3364 break;
3365 case 4:
3366 case 5:
3367 array[num++].SetDefaults(4772);
3368 array[num++].SetDefaults(4773);
3369 break;
3370 case 6:
3371 case 7:
3372 array[num++].SetDefaults(4560);
3373 array[num++].SetDefaults(4775);
3374 break;
3375 }
3376 break;
3377 }
3378 case 24:
3379 array[num++].SetDefaults(5071);
3380 array[num++].SetDefaults(5072);
3381 array[num++].SetDefaults(5073);
3382 array[num++].SetDefaults(5076);
3383 array[num++].SetDefaults(5077);
3384 array[num++].SetDefaults(5078);
3385 array[num++].SetDefaults(5079);
3386 array[num++].SetDefaults(5080);
3387 array[num++].SetDefaults(5081);
3388 array[num++].SetDefaults(5082);
3389 array[num++].SetDefaults(5083);
3390 array[num++].SetDefaults(5084);
3391 array[num++].SetDefaults(5085);
3392 array[num++].SetDefaults(5086);
3393 array[num++].SetDefaults(5087);
3394 array[num++].SetDefaults(5310);
3395 array[num++].SetDefaults(5222);
3396 array[num++].SetDefaults(5228);
3398 {
3399 array[num++].SetDefaults(5266);
3400 }
3402 {
3403 array[num++].SetDefaults(5044);
3404 }
3406 {
3407 array[num++].SetDefaults(1309);
3408 array[num++].SetDefaults(1859);
3409 array[num++].SetDefaults(1358);
3410 if (Main.player[Main.myPlayer].ZoneDesert)
3411 {
3412 array[num++].SetDefaults(857);
3413 }
3414 if (Main.bloodMoon)
3415 {
3416 array[num++].SetDefaults(4144);
3417 }
3419 {
3420 if (Main.moonPhase == 0 || Main.moonPhase == 1)
3421 {
3422 array[num++].SetDefaults(2584);
3423 }
3424 if (Main.moonPhase == 2 || Main.moonPhase == 3)
3425 {
3426 array[num++].SetDefaults(854);
3427 }
3428 if (Main.moonPhase == 4 || Main.moonPhase == 5)
3429 {
3430 array[num++].SetDefaults(855);
3431 }
3432 if (Main.moonPhase == 6 || Main.moonPhase == 7)
3433 {
3434 array[num++].SetDefaults(905);
3435 }
3436 }
3437 }
3438 array[num++].SetDefaults(5088);
3439 break;
3440 }
3441 bool num12 = type != 19 && type != 20;
3442 bool flag3 = TeleportPylonsSystem.DoesPositionHaveEnoughNPCs(2, Main.LocalPlayer.Center.ToTileCoordinates16());
3443 if (num12 && (flag || Main.remixWorld) && flag3 && !Main.player[Main.myPlayer].ZoneCorrupt && !Main.player[Main.myPlayer].ZoneCrimson)
3444 {
3445 if (!Main.player[Main.myPlayer].ZoneSnow && !Main.player[Main.myPlayer].ZoneDesert && !Main.player[Main.myPlayer].ZoneBeach && !Main.player[Main.myPlayer].ZoneJungle && !Main.player[Main.myPlayer].ZoneHallow && !Main.player[Main.myPlayer].ZoneGlowshroom)
3446 {
3447 if (Main.remixWorld)
3448 {
3449 if ((double)(Main.player[Main.myPlayer].Center.Y / 16f) > Main.rockLayer && Main.player[Main.myPlayer].Center.Y / 16f < (float)(Main.maxTilesY - 350) && num < 39)
3450 {
3451 array[num++].SetDefaults(4876);
3452 }
3453 }
3454 else if ((double)(Main.player[Main.myPlayer].Center.Y / 16f) < Main.worldSurface && num < 39)
3455 {
3456 array[num++].SetDefaults(4876);
3457 }
3458 }
3459 if (Main.player[Main.myPlayer].ZoneSnow && num < 39)
3460 {
3461 array[num++].SetDefaults(4920);
3462 }
3463 if (Main.player[Main.myPlayer].ZoneDesert && num < 39)
3464 {
3465 array[num++].SetDefaults(4919);
3466 }
3467 if (Main.remixWorld)
3468 {
3469 if (!Main.player[Main.myPlayer].ZoneSnow && !Main.player[Main.myPlayer].ZoneDesert && !Main.player[Main.myPlayer].ZoneBeach && !Main.player[Main.myPlayer].ZoneJungle && !Main.player[Main.myPlayer].ZoneHallow && (double)(Main.player[Main.myPlayer].Center.Y / 16f) >= Main.worldSurface && num < 39)
3470 {
3471 array[num++].SetDefaults(4917);
3472 }
3473 }
3474 else if (!Main.player[Main.myPlayer].ZoneSnow && !Main.player[Main.myPlayer].ZoneDesert && !Main.player[Main.myPlayer].ZoneBeach && !Main.player[Main.myPlayer].ZoneJungle && !Main.player[Main.myPlayer].ZoneHallow && !Main.player[Main.myPlayer].ZoneGlowshroom && (double)(Main.player[Main.myPlayer].Center.Y / 16f) >= Main.worldSurface && num < 39)
3475 {
3476 array[num++].SetDefaults(4917);
3477 }
3478 bool flag4 = Main.player[Main.myPlayer].ZoneBeach && (double)Main.player[Main.myPlayer].position.Y < Main.worldSurface * 16.0;
3479 if (Main.remixWorld)
3480 {
3481 float num13 = Main.player[Main.myPlayer].position.X / 16f;
3482 float num14 = Main.player[Main.myPlayer].position.Y / 16f;
3483 flag4 |= ((double)num13 < (double)Main.maxTilesX * 0.43 || (double)num13 > (double)Main.maxTilesX * 0.57) && (double)num14 > Main.rockLayer && num14 < (float)(Main.maxTilesY - 350);
3484 }
3485 if (flag4 && num < 39)
3486 {
3487 array[num++].SetDefaults(4918);
3488 }
3489 if (Main.player[Main.myPlayer].ZoneJungle && num < 39)
3490 {
3491 array[num++].SetDefaults(4875);
3492 }
3493 if (Main.player[Main.myPlayer].ZoneHallow && num < 39)
3494 {
3495 array[num++].SetDefaults(4916);
3496 }
3497 if (Main.player[Main.myPlayer].ZoneGlowshroom && (!Main.remixWorld || Main.player[Main.myPlayer].Center.Y / 16f < (float)(Main.maxTilesY - 200)) && num < 39)
3498 {
3499 array[num++].SetDefaults(4921);
3500 }
3501 }
3502 for (int num15 = 0; num15 < num; num15++)
3503 {
3504 array[num15].isAShopItem = true;
3505 }
3506 }
3507
3509 {
3510 if (!DidDiscoverBestiaryEntry(585))
3511 {
3512 return false;
3513 }
3514 if (!DidDiscoverBestiaryEntry(584))
3515 {
3516 return false;
3517 }
3518 if (!DidDiscoverBestiaryEntry(583))
3519 {
3520 return false;
3521 }
3522 return true;
3523 }
3524
3525 private static bool DidDiscoverBestiaryEntry(int npcId)
3526 {
3527 return Main.BestiaryDB.FindEntryByNPCID(npcId).UIInfoProvider.GetEntryUICollectionInfo().UnlockState > BestiaryEntryUnlockState.NotKnownAtAll_0;
3528 }
3529
3531 {
3532 Point point = worldPosition.ToTileCoordinates();
3533 int num = FindChest(point.X, point.Y);
3534 if (num != -1)
3535 {
3536 Main.chest[num].eatingAnimationTime = duration;
3537 }
3538 }
3539
3540 public static void UpdateChestFrames()
3541 {
3542 int num = 8000;
3543 _chestInUse.Clear();
3544 for (int i = 0; i < 255; i++)
3545 {
3546 if (Main.player[i].active && Main.player[i].chest >= 0 && Main.player[i].chest < num)
3547 {
3548 _chestInUse.Add(Main.player[i].chest);
3549 }
3550 }
3551 Chest chest = null;
3552 for (int j = 0; j < num; j++)
3553 {
3554 chest = Main.chest[j];
3555 if (chest != null)
3556 {
3557 if (_chestInUse.Contains(j))
3558 {
3559 chest.frameCounter++;
3560 }
3561 else
3562 {
3563 chest.frameCounter--;
3564 }
3565 if (chest.eatingAnimationTime == 9 && chest.frame == 1)
3566 {
3567 SoundEngine.PlaySound(7, new Vector2(chest.x * 16 + 16, chest.y * 16 + 16));
3568 }
3569 if (chest.eatingAnimationTime > 0)
3570 {
3571 chest.eatingAnimationTime--;
3572 }
3573 if (chest.frameCounter < chest.eatingAnimationTime)
3574 {
3575 chest.frameCounter = chest.eatingAnimationTime;
3576 }
3577 if (chest.frameCounter < 0)
3578 {
3579 chest.frameCounter = 0;
3580 }
3581 if (chest.frameCounter > 10)
3582 {
3583 chest.frameCounter = 10;
3584 }
3585 if (chest.frameCounter == 0)
3586 {
3587 chest.frame = 0;
3588 }
3589 else if (chest.frameCounter == 10)
3590 {
3591 chest.frame = 2;
3592 }
3593 else
3594 {
3595 chest.frame = 1;
3596 }
3597 }
3598 }
3599 }
3600
3601 public void FixLoadedData()
3602 {
3603 Item[] array = item;
3604 for (int i = 0; i < array.Length; i++)
3605 {
3606 array[i].FixAgainstExploit();
3607 }
3608 }
3609}
static void PlaySound(int type, Vector2 position, int style=1)
static int UsingChest(int i)
Definition Chest.cs:531
static bool DestroyChest(int X, int Y)
Definition Chest.cs:691
static int[] dresserTypeToIcon
Definition Chest.cs:33
static void AskForChestToEatItem(Vector2 worldPosition, int duration)
Definition Chest.cs:3530
static void SetupTravelShop_GetPainting(Player playerWithHighestLuck, int[] rarity, ref int it, int minimumRarity=0)
Definition Chest.cs:870
Chest(bool bank=false)
Definition Chest.cs:59
void AddItemToShop(Item newItem)
Definition Chest.cs:742
static void UpdateChestFrames()
Definition Chest.cs:3540
override string ToString()
Definition Chest.cs:66
static int[] dresserItemSpawn
Definition Chest.cs:35
static void SetupTravelShop_GetItem(Player playerWithHighestLuck, int[] rarity, ref int it, int minimumRarity=0)
Definition Chest.cs:1013
void SetupShop(int type)
Definition Chest.cs:1400
static bool BestiaryGirl_IsFairyTorchAvailable()
Definition Chest.cs:3508
static int[] chestTypeToIcon2
Definition Chest.cs:27
static int FindChestByGuessing(int X, int Y)
Definition Chest.cs:558
static bool IsLocked(int x, int y)
Definition Chest.cs:235
const int MaxNameLength
Definition Chest.cs:39
object Clone()
Definition Chest.cs:374
static int[] chestItemSpawn
Definition Chest.cs:23
void FixLoadedData()
Definition Chest.cs:3601
const int maxDresserTypes
Definition Chest.cs:31
static int[] chestTypeToIcon
Definition Chest.cs:21
static int CreateChest(int X, int Y, int id=-1)
Definition Chest.cs:645
Item[] item
Definition Chest.cs:41
static bool SetupTravelShop_CanAddItemToShop(int it)
Definition Chest.cs:846
static bool IsLocked(Tile t)
Definition Chest.cs:240
static Item PutItemInNearbyChest(Item item, Vector2 position)
Definition Chest.cs:272
static int[] chestItemSpawn2
Definition Chest.cs:29
static void VisualizeChestTransfer_CoinsBatch(Vector2 position, Vector2 chestPosition, long coinsMoved)
Definition Chest.cs:357
int frameCounter
Definition Chest.cs:51
static void ServerPlaceItem(int plr, int slot)
Definition Chest.cs:257
string name
Definition Chest.cs:49
const float chestStackRange
Definition Chest.cs:17
static int AfterPlacement_Hook(int x, int y, int type=21, int style=0, int direction=1, int alternate=0)
Definition Chest.cs:607
static int FindEmptyChest(int x, int y, int type=21, int style=0, int direction=1, int alternate=0)
Definition Chest.cs:570
static void Initialize()
Definition Chest.cs:79
static void VisualizeChestTransfer(Vector2 position, Vector2 chestPosition, Item item, int amountMoved)
Definition Chest.cs:347
static bool DidDiscoverBestiaryEntry(int npcId)
Definition Chest.cs:3525
static bool NearOtherChests(int x, int y)
Definition Chest.cs:591
static void SetupTravelShop()
Definition Chest.cs:1303
bool bankChest
Definition Chest.cs:47
static bool Unlock(int X, int Y)
Definition Chest.cs:379
int eatingAnimationTime
Definition Chest.cs:55
static int FindChest(int X, int Y)
Definition Chest.cs:546
static void DestroyChestDirect(int X, int Y, int id)
Definition Chest.cs:718
const int maxChestTypes2
Definition Chest.cs:25
static HashSet< int > _chestInUse
Definition Chest.cs:57
static bool CanDestroyChest(int X, int Y)
Definition Chest.cs:670
const int maxItems
Definition Chest.cs:37
static List< int > GetCurrentlyOpenChests()
Definition Chest.cs:222
static void SetupTravelShop_AdjustSlotRarities(int slotItemAttempts, ref int[] rarity)
Definition Chest.cs:985
const int maxChestTypes
Definition Chest.cs:19
static void SetupTravelShop_AddToShop(int it, ref int added, ref int count)
Definition Chest.cs:764
static bool Lock(int X, int Y)
Definition Chest.cs:461
static bool IsPlayerInChest(int i)
Definition Chest.cs:210
static int NewDust(Vector2 Position, int Width, int Height, int Type, float SpeedX=0f, float SpeedY=0f, int Alpha=0, Color newColor=default(Color), float Scale=1f)
Definition Dust.cs:73
static Tile GetTileSafely(Vector2 position)
Definition Framing.cs:419
static void BroadcastOrRequestParticleSpawn(ParticleOrchestraType type, ParticleOrchestraSettings settings)
static bool DoesPositionHaveEnoughNPCs(int necessaryNPCCount, Point16 centerPoint)
static bool[] BasicChest
Definition TileID.cs:223
static int buyPrice(int platinum=0, int gold=0, int silver=0, int copper=0)
Definition Item.cs:47979
Item Clone()
Definition Item.cs:49916
int value
Definition Item.cs:259
int stack
Definition Item.cs:149
bool IsTheSameAs(Item compareItem)
Definition Item.cs:49926
bool favorited
Definition Item.cs:135
bool buyOnce
Definition Item.cs:249
void SetDefaults(int Type=0)
Definition Item.cs:47332
static bool IsItAHappyWindyDay
Definition Main.cs:2869
static bool halloween
Definition Main.cs:688
static double time
Definition Main.cs:1284
static Chest[] chest
Definition Main.cs:1699
static int[] travelShop
Definition Main.cs:1843
static double worldSurface
Definition Main.cs:1272
static ItemShopSellbackHelper shopSellbackHelper
Definition Main.cs:1841
static int myPlayer
Definition Main.cs:1801
static int netMode
Definition Main.cs:2095
static double rockLayer
Definition Main.cs:1274
static bool expertMode
Definition Main.cs:2737
static bool dayTime
Definition Main.cs:1282
static bool bloodMoon
Definition Main.cs:1296
static bool xMas
Definition Main.cs:686
static BestiaryUnlockProgressReport GetBestiaryProgressReport()
Definition Main.cs:62285
static Vector2 screenPosition
Definition Main.cs:1715
static int moonPhase
Definition Main.cs:1288
static int maxTilesX
Definition Main.cs:1114
static bool getGoodWorld
Definition Main.cs:341
static Tile[,] tile
Definition Main.cs:1675
static bool eclipse
Definition Main.cs:1312
static BestiaryDatabase BestiaryDB
Definition Main.cs:1864
static UnifiedRandom rand
Definition Main.cs:1387
static bool dontStarveWorld
Definition Main.cs:345
static bool tenthAnniversaryWorld
Definition Main.cs:343
static int screenWidth
Definition Main.cs:1719
static Player LocalPlayer
Definition Main.cs:2829
static bool hardMode
Definition Main.cs:1022
static Player[] player
Definition Main.cs:1803
static bool IsItStorming
Definition Main.cs:2871
static bool remixWorld
Definition Main.cs:349
static bool downedTowerSolar
Definition NPC.cs:385
static bool downedFrost
Definition NPC.cs:357
static bool downedMechBoss2
Definition NPC.cs:425
static bool downedBoss2
Definition NPC.cs:347
static bool downedMechBossAny
Definition NPC.cs:421
static bool downedBoss1
Definition NPC.cs:345
static bool downedSlimeKing
Definition NPC.cs:353
static bool downedMechBoss3
Definition NPC.cs:427
static bool downedPirates
Definition NPC.cs:359
static bool downedMoonlord
Definition NPC.cs:383
static bool AnyNPCs(int Type)
Definition NPC.cs:86689
static bool downedQueenBee
Definition NPC.cs:351
static bool downedClown
Definition NPC.cs:361
static bool peddlersSatchelWasUsed
Definition NPC.cs:343
static bool downedGolemBoss
Definition NPC.cs:365
static bool downedMartians
Definition NPC.cs:367
static bool downedAncientCultist
Definition NPC.cs:381
static bool downedBoss3
Definition NPC.cs:349
static bool downedPlantBoss
Definition NPC.cs:363
static bool downedMechBoss1
Definition NPC.cs:423
static bool downedQueenSlime
Definition NPC.cs:395
static void SendData(int msgType, int remoteClient=-1, int ignoreClient=-1, NetworkText text=null, int number=0, float number2=0f, float number3=0f, float number4=0f, int number5=0, int number6=0, int number7=0)
Definition NetMessage.cs:88
static void OriginToTopLeft(int type, int style, ref Point16 baseCoords)
int RollLuck(int range)
Definition Player.cs:17863
static void FindRecipes(bool canDelayCheck=false)
Definition Recipe.cs:453
ushort type
Definition Tile.cs:8
short frameX
Definition Tile.cs:22
static int[] CoinsSplit(long count)
Definition Utils.cs:665
static bool crimson
Definition WorldGen.cs:932
static bool shadowOrbSmashed
Definition WorldGen.cs:974