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

◆ GetChat()

string Terraria.NPC.GetChat ( )
inline

Definition at line 90430 of file NPC.cs.

90431 {
90432 PreventJojaColaDialog = false;
90433 RerollDryadText = 0;
90434 Recipe.FindRecipes();
90435 bool flag = false;
90436 bool flag2 = false;
90437 bool flag3 = false;
90438 bool flag4 = false;
90439 bool flag5 = false;
90440 bool flag6 = false;
90441 bool flag7 = false;
90442 bool flag8 = false;
90443 bool flag9 = false;
90444 bool flag10 = false;
90445 bool flag11 = false;
90446 bool flag12 = false;
90447 bool flag13 = false;
90448 bool flag14 = false;
90449 bool flag15 = false;
90450 bool flag16 = false;
90451 bool flag17 = false;
90452 object obj = Lang.CreateDialogSubstitutionObject(this);
90453 for (int i = 0; i < 200; i++)
90454 {
90455 if (Main.npc[i].active)
90456 {
90457 if (Main.npc[i].type == 17)
90458 {
90459 flag = true;
90460 }
90461 else if (Main.npc[i].type == 18)
90462 {
90463 flag2 = true;
90464 }
90465 else if (Main.npc[i].type == 19)
90466 {
90467 flag3 = true;
90468 }
90469 else if (Main.npc[i].type == 20)
90470 {
90471 flag4 = true;
90472 }
90473 else if (Main.npc[i].type == 37)
90474 {
90475 flag5 = true;
90476 }
90477 else if (Main.npc[i].type == 38)
90478 {
90479 flag6 = true;
90480 }
90481 else if (Main.npc[i].type == 124)
90482 {
90483 flag7 = true;
90484 }
90485 else if (Main.npc[i].type == 107)
90486 {
90487 flag8 = true;
90488 }
90489 else if (Main.npc[i].type == 54)
90490 {
90491 flag9 = true;
90492 }
90493 else if (Main.npc[i].type == 160)
90494 {
90495 flag10 = true;
90496 }
90497 else if (Main.npc[i].type == 178)
90498 {
90499 flag11 = true;
90500 }
90501 else if (Main.npc[i].type == 229)
90502 {
90503 flag12 = true;
90504 }
90505 else if (Main.npc[i].type == 209)
90506 {
90507 flag13 = true;
90508 }
90509 else if (Main.npc[i].type == 208)
90510 {
90511 flag14 = true;
90512 }
90513 else if (Main.npc[i].type == 353)
90514 {
90515 flag15 = true;
90516 }
90517 else if (Main.npc[i].type == 22)
90518 {
90519 flag16 = true;
90520 }
90521 else if (Main.npc[i].type == 441)
90522 {
90523 flag17 = true;
90524 }
90525 }
90526 }
90527 string result = "";
90528 string specialEventText = "";
90529 if (type == 17)
90530 {
90531 result = (HasSpecialEventText("Merchant", out specialEventText) ? specialEventText : ((!downedBoss1 && Main.rand.Next(3) == 0) ? ((Main.player[Main.myPlayer].statLifeMax < 200) ? Lang.dialog(1) : ((Main.player[Main.myPlayer].statDefense > 10) ? Lang.dialog(3) : Lang.dialog(2))) : (Main.dayTime ? ((Main.time < 16200.0) ? (Main.rand.Next(3) switch
90532 {
90533 0 => Lang.dialog(4),
90534 1 => Lang.dialog(5),
90535 _ => Lang.dialog(6),
90536 }) : ((Main.time > 37800.0) ? (Main.rand.Next(3) switch
90537 {
90538 0 => Lang.dialog(7),
90539 1 => Lang.dialog(8),
90540 _ => Lang.dialog(9),
90541 }) : (Main.rand.Next(3) switch
90542 {
90543 0 => Lang.dialog(10),
90544 1 => Lang.dialog(11),
90545 _ => Lang.dialog(12),
90546 }))) : (Main.bloodMoon ? ((flag2 && flag7 && Main.rand.Next(3) == 0) ? Lang.dialog(13) : (Main.rand.Next(4) switch
90547 {
90548 0 => Lang.dialog(14),
90549 1 => Lang.dialog(15),
90550 2 => Lang.dialog(16),
90551 _ => Lang.dialog(17),
90552 })) : ((Main.time < 9720.0) ? ((Main.rand.Next(2) != 0) ? Lang.dialog(19) : Lang.dialog(18)) : ((Main.time > 22680.0) ? ((Main.rand.Next(2) != 0) ? Lang.dialog(21) : Lang.dialog(20)) : (Main.rand.Next(3) switch
90553 {
90554 0 => Lang.dialog(22),
90555 1 => Lang.dialog(23),
90556 _ => Lang.dialog(24),
90557 })))))));
90558 }
90559 else if (type == 18)
90560 {
90562 {
90563 result = specialEventText;
90564 }
90565 else if (Main.bloodMoon)
90566 {
90567 result = (((double)Main.player[Main.myPlayer].statLife < (double)Main.player[Main.myPlayer].statLifeMax2 * 0.66) ? (Main.rand.Next(3) switch
90568 {
90569 0 => Lang.dialog(25),
90570 1 => Lang.dialog(26),
90571 _ => Lang.dialog(27),
90572 }) : (Main.rand.Next(4) switch
90573 {
90574 0 => Lang.dialog(28),
90575 1 => Lang.dialog(29),
90576 2 => Lang.dialog(30),
90577 _ => Lang.dialog(31),
90578 }));
90579 }
90580 else if (Main.rand.Next(5) == 0 && Main.LocalPlayer.numberOfDeathsPVE > 1)
90581 {
90582 int numberOfDeathsPVE = Main.LocalPlayer.numberOfDeathsPVE;
90583 int num = 25;
90584 int num2 = 100;
90585 string text = "Low";
90586 if (numberOfDeathsPVE >= num2)
90587 {
90588 text = "High";
90589 }
90590 else if (numberOfDeathsPVE >= num)
90591 {
90592 text = "Medium";
90593 }
90594 result = Language.GetTextValueWith("NurseSpecialText.DeathCount" + text, obj);
90595 }
90596 else if (Main.rand.Next(3) == 0 && !downedBoss3)
90597 {
90598 result = Lang.dialog(32);
90599 }
90600 else if (flag6 && Main.rand.Next(4) == 0)
90601 {
90602 result = Lang.dialog(33);
90603 }
90604 else if (flag3 && Main.rand.Next(4) == 0)
90605 {
90606 result = Lang.dialog(34);
90607 }
90608 else if (flag16 && Main.rand.Next(4) == 0)
90609 {
90610 result = Lang.dialog(35);
90611 }
90612 else if ((double)Main.player[Main.myPlayer].statLife < (double)Main.player[Main.myPlayer].statLifeMax2 * 0.33)
90613 {
90614 result = Main.rand.Next(5) switch
90615 {
90616 0 => Lang.dialog(36),
90617 1 => Lang.dialog(37),
90618 2 => Lang.dialog(38),
90619 3 => Lang.dialog(39),
90620 _ => Lang.dialog(40),
90621 };
90622 }
90623 else if ((double)Main.player[Main.myPlayer].statLife < (double)Main.player[Main.myPlayer].statLifeMax2 * 0.66)
90624 {
90625 result = Main.rand.Next(7) switch
90626 {
90627 0 => Lang.dialog(41),
90628 1 => Lang.dialog(42),
90629 2 => Lang.dialog(43),
90630 3 => Lang.dialog(44),
90631 4 => Lang.dialog(45),
90632 5 => Lang.dialog(46),
90633 _ => Lang.dialog(47),
90634 };
90635 }
90636 else
90637 {
90638 LocalizedText[] array = Language.FindAll(Lang.CreateDialogFilter("NurseChatter.", obj));
90639 int num3 = Main.rand.Next(4 + array.Length);
90640 result = ((num3 >= 4) ? array[num3 - 4].FormatWith(obj) : (num3 switch
90641 {
90642 0 => Lang.dialog(48),
90643 1 => Lang.dialog(49),
90644 2 => Lang.dialog(50),
90645 _ => Lang.dialog(51),
90646 }));
90647 }
90648 }
90649 else if (type == 19)
90650 {
90651 result = (HasSpecialEventText("ArmsDealer", out specialEventText) ? specialEventText : ((flag16 && downedBoss3 && !Main.hardMode) ? Lang.dialog(58) : ((flag2 && Main.rand.Next(5) == 0) ? Lang.dialog(59) : ((flag2 && Main.rand.Next(5) == 0) ? Lang.dialog(60) : ((flag4 && Main.rand.Next(5) == 0) ? Lang.dialog(61) : ((flag6 && Main.rand.Next(5) == 0) ? Lang.dialog(62) : ((flag6 && Main.rand.Next(5) == 0) ? Lang.dialog(63) : (Main.bloodMoon ? ((Main.rand.Next(2) != 0) ? Lang.dialog(65) : Lang.dialog(64)) : (Main.rand.Next(3) switch
90652 {
90653 0 => Lang.dialog(66),
90654 1 => Lang.dialog(67),
90655 _ => Lang.dialog(68),
90656 })))))))));
90657 }
90658 else if (type == 20)
90659 {
90660 result = (HasSpecialEventText("Dryad", out specialEventText) ? specialEventText : ((DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0) ? ((!DD2Event.DownedInvasionT2) ? Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier1", obj) : Language.GetTextValueWith("DryadSpecialText.AfterDD2Tier2", obj)) : ((!downedBoss2 && Main.rand.Next(3) == 0) ? ((!WorldGen.crimson) ? Lang.dialog(69) : Lang.dialog(332)) : ((flag3 && Main.rand.Next(6) == 0) ? Lang.dialog(70) : ((flag && Main.rand.Next(6) == 0) ? Lang.dialog(71) : ((flag5 && Main.rand.Next(6) == 0) ? Lang.dialog(72) : ((flag10 && Main.rand.Next(6) == 0) ? Lang.dialog(238) : (Main.bloodMoon ? (Main.rand.Next(4) switch
90661 {
90662 0 => Lang.dialog(73),
90663 1 => Lang.dialog(74),
90664 2 => Lang.dialog(75),
90665 _ => Lang.dialog(76),
90666 }) : (Main.rand.Next(5) switch
90667 {
90668 0 => (!WorldGen.crimson) ? Lang.dialog(77) : Lang.dialog(333),
90669 1 => Lang.dialog(78),
90670 2 => Lang.dialog(79),
90671 3 => Lang.dialog(80),
90672 _ => Lang.dialog(81),
90673 })))))))));
90674 if (Main.LocalPlayer.HasItem(5275))
90675 {
90676 result = Language.GetTextValue("StardewTalk.PlayerHasColaButIsNotHoldingIt");
90677 }
90678 }
90679 else if (type == 37)
90680 {
90681 result = ((!Main.dayTime || Main.remixWorld) ? ((Main.player[Main.myPlayer].statLifeMax < 300 || Main.player[Main.myPlayer].statDefense < 10) ? (Main.rand.Next(4) switch
90682 {
90683 0 => Lang.dialog(85),
90684 1 => Lang.dialog(86),
90685 2 => Lang.dialog(87),
90686 _ => Lang.dialog(88),
90687 }) : (Main.rand.Next(4) switch
90688 {
90689 0 => Lang.dialog(89),
90690 1 => Lang.dialog(90),
90691 2 => Lang.dialog(91),
90692 _ => Lang.dialog(92),
90693 })) : (Main.rand.Next(3) switch
90694 {
90695 0 => Lang.dialog(82),
90696 1 => Lang.dialog(83),
90697 _ => Lang.dialog(84),
90698 }));
90699 }
90700 else if (type == 38)
90701 {
90702 result = (HasSpecialEventText("Demolitionist", out specialEventText) ? specialEventText : ((!downedBoss2 && Main.rand.Next(3) == 0) ? Lang.dialog(93) : (Main.bloodMoon ? (Main.rand.Next(3) switch
90703 {
90704 0 => Lang.dialog(94),
90705 1 => Lang.dialog(95),
90706 _ => Lang.dialog(96),
90707 }) : (((DD2Event.DownedInvasionT1 || DD2Event.Ongoing) && Main.rand.Next(5) == 0) ? Language.GetTextValueWith("DemolitionistSpecialText.AfterDD2Start", obj) : ((flag3 && Main.rand.Next(5) == 0) ? Lang.dialog(97) : ((flag3 && Main.rand.Next(5) == 0) ? Lang.dialog(98) : ((flag2 && Main.rand.Next(4) == 0) ? Lang.dialog(99) : ((flag4 && Main.rand.Next(4) == 0) ? Lang.dialog(100) : ((!Main.dayTime) ? (Main.rand.Next(4) switch
90708 {
90709 0 => Lang.dialog(101),
90710 1 => Lang.dialog(102),
90711 2 => Lang.dialog(103),
90712 _ => Lang.dialog(104),
90713 }) : (Main.rand.Next(5) switch
90714 {
90715 0 => Lang.dialog(105),
90716 1 => Lang.dialog(106),
90717 2 => Lang.dialog(107),
90718 3 => Lang.dialog(108),
90719 _ => Lang.dialog(109),
90720 }))))))))));
90721 }
90722 else if (type == 54)
90723 {
90724 result = (HasSpecialEventText("Clothier", out specialEventText) ? specialEventText : ((!flag7 && Main.rand.Next(2) == 0) ? Lang.dialog(110) : ((flag10 && Main.rand.Next(6) == 0) ? Lang.dialog(237) : (Main.bloodMoon ? Lang.dialog(111) : ((flag2 && Main.rand.Next(4) == 0) ? Lang.dialog(112) : ((Main.player[Main.myPlayer].head == 24) ? Lang.dialog(113) : (Main.rand.Next(6) switch
90725 {
90726 0 => Lang.dialog(114),
90727 1 => Lang.dialog(115),
90728 2 => Lang.dialog(116),
90729 3 => Lang.dialog(117),
90730 4 => Lang.dialog(118),
90731 _ => Lang.dialog(119),
90732 })))))));
90733 }
90734 else if (type == 105)
90735 {
90736 result = Lang.dialog(120);
90737 }
90738 else if (type == 107)
90739 {
90740 if (homeless)
90741 {
90742 result = Main.rand.Next(5) switch
90743 {
90744 0 => Lang.dialog(121),
90745 1 => Lang.dialog(122),
90746 2 => Lang.dialog(123),
90747 3 => Lang.dialog(124),
90748 _ => Lang.dialog(125),
90749 };
90750 }
90751 else if (HasSpecialEventText("GoblinTinkerer", out specialEventText))
90752 {
90753 result = specialEventText;
90754 }
90755 else if (flag7 && Main.rand.Next(5) == 0)
90756 {
90757 result = Lang.dialog(126);
90758 }
90759 else if (flag15 && Main.rand.Next(5) == 0)
90760 {
90761 result = Lang.dialog(309);
90762 }
90763 else
90764 {
90765 LocalizedText[] array2 = Language.FindAll(Lang.CreateDialogFilter("GoblinTinkererChatter.", obj));
90766 int num4 = Main.rand.Next(array2.Length + 5);
90767 result = ((num4 >= 5) ? array2[num4 - 5].FormatWith(obj) : ((!Main.dayTime) ? (num4 switch
90768 {
90769 0 => Lang.dialog(127),
90770 1 => Lang.dialog(128),
90771 2 => Lang.dialog(129),
90772 3 => Lang.dialog(130),
90773 _ => Lang.dialog(131),
90774 }) : (num4 switch
90775 {
90776 0 => Lang.dialog(132),
90777 1 => Lang.dialog(133),
90778 2 => Lang.dialog(134),
90779 3 => Lang.dialog(135),
90780 _ => Lang.dialog(136),
90781 })));
90782 }
90783 }
90784 else if (type == 106)
90785 {
90786 result = Lang.dialog(137);
90787 }
90788 else if (type == 108)
90789 {
90790 if (homeless)
90791 {
90792 int num5 = Main.rand.Next(3);
90793 if (num5 == 0)
90794 {
90795 result = Lang.dialog(138);
90796 }
90797 else if (num5 == 1 && !Main.player[Main.myPlayer].Male)
90798 {
90799 result = Lang.dialog(139);
90800 }
90801 else
90802 {
90803 switch (num5)
90804 {
90805 case 1:
90806 result = Lang.dialog(140);
90807 break;
90808 case 2:
90809 result = Lang.dialog(141);
90810 break;
90811 }
90812 }
90813 }
90815 {
90816 result = specialEventText;
90817 }
90818 else if (HasSpecialEventText("Wizard", out specialEventText))
90819 {
90820 result = specialEventText;
90821 }
90822 else if (DD2Event.DownedInvasionT1 && Main.rand.Next(6) == 0)
90823 {
90824 result = Language.GetTextValueWith("WizardSpecialText.AfterDD2Tier1", obj);
90825 }
90826 else if (Main.player[Main.myPlayer].Male && flag16 && Main.rand.Next(6) == 0)
90827 {
90828 result = Lang.dialog(142);
90829 }
90830 else if (Main.player[Main.myPlayer].Male && flag6 && Main.rand.Next(6) == 0)
90831 {
90832 result = Lang.dialog(143);
90833 }
90834 else if (Main.player[Main.myPlayer].Male && flag8 && Main.rand.Next(6) == 0)
90835 {
90836 result = Lang.dialog(144);
90837 }
90838 else if (!Main.player[Main.myPlayer].Male && flag2 && Main.rand.Next(6) == 0)
90839 {
90840 result = Lang.dialog(145);
90841 }
90842 else if (!Main.player[Main.myPlayer].Male && flag7 && Main.rand.Next(6) == 0)
90843 {
90844 result = Lang.dialog(146);
90845 }
90846 else if (!Main.player[Main.myPlayer].Male && flag4 && Main.rand.Next(6) == 0)
90847 {
90848 result = Lang.dialog(147);
90849 }
90850 else if (Main.dayTime)
90851 {
90852 result = Main.rand.Next(5) switch
90853 {
90854 0 => Lang.dialog(151),
90855 1 => Lang.dialog(152),
90856 2 => Lang.dialog(153),
90857 3 => Lang.dialog(154),
90858 _ => Lang.dialog(155),
90859 };
90860 }
90861 else
90862 {
90863 switch (Main.rand.Next(3))
90864 {
90865 case 0:
90866 result = Lang.dialog(148);
90867 break;
90868 case 1:
90869 result = Lang.dialog(149);
90870 break;
90871 case 2:
90872 result = Lang.dialog(150);
90873 break;
90874 }
90875 }
90876 }
90877 else if (type == 123)
90878 {
90879 result = Lang.dialog(156);
90880 }
90881 else if (type == 124)
90882 {
90883 if (homeless)
90884 {
90885 result = Main.rand.Next(4) switch
90886 {
90887 0 => Lang.dialog(157),
90888 1 => Lang.dialog(158),
90889 2 => Lang.dialog(159),
90890 _ => Lang.dialog(160),
90891 };
90892 }
90893 else if (HasSpecialEventText("Mechanic", out specialEventText))
90894 {
90895 result = specialEventText;
90896 }
90897 else if (Main.bloodMoon)
90898 {
90899 result = Main.rand.Next(4) switch
90900 {
90901 0 => Lang.dialog(161),
90902 1 => Lang.dialog(162),
90903 2 => Lang.dialog(163),
90904 _ => Lang.dialog(164),
90905 };
90906 }
90907 else if (flag8 && Main.rand.Next(6) == 0)
90908 {
90909 result = Lang.dialog(165);
90910 }
90911 else if (flag3 && Main.rand.Next(6) == 0)
90912 {
90913 result = Lang.dialog(166);
90914 }
90915 else
90916 {
90917 LocalizedText[] array3 = Language.FindAll(Lang.CreateDialogFilter("MechanicChatter.", obj));
90918 int num6 = Main.rand.Next(3 + array3.Length);
90919 result = ((num6 >= 3) ? array3[num6 - 3].FormatWith(obj) : (num6 switch
90920 {
90921 0 => Lang.dialog(167),
90922 1 => Lang.dialog(168),
90923 _ => Lang.dialog(169),
90924 }));
90925 }
90926 }
90927 else if (type == 22)
90928 {
90929 result = (HasSpecialEventText("Guide", out specialEventText) ? specialEventText : (Main.bloodMoon ? (Main.rand.Next(3) switch
90930 {
90931 0 => Lang.dialog(170),
90932 1 => Lang.dialog(171),
90933 _ => Lang.dialog(172),
90934 }) : ((LanternNight.LanternsUp && !downedMoonlord) ? Language.GetTextValue("GuideSpecialText.Lantern1") : ((LanternNight.LanternsUp && downedMoonlord) ? Language.GetTextValue("GuideSpecialText.Lantern2") : (Main.eclipse ? Language.GetTextValue("GuideSpecialText.Eclipse") : (Main.slimeRain ? Language.GetTextValue("GuideSpecialText.SlimeRain") : ((!Main.dayTime) ? Lang.dialog(173) : ((Main.hardMode && flag17 && Main.rand.Next(8) == 0) ? Language.GetTextValueWith("GuideChatter.Chatter_1", obj) : ((Main.hardMode && Main.rand.Next(8) == 0) ? Language.GetTextValue("GuideChatter.Chatter_2") : (Main.rand.Next(3) switch
90935 {
90936 0 => Lang.dialog(174),
90937 1 => Lang.dialog(175),
90938 _ => Lang.dialog(176),
90939 }))))))))));
90940 }
90941 else if (type == 142)
90942 {
90943 int num7 = Main.rand.Next(3);
90945 {
90946 result = specialEventText;
90947 }
90948 else
90949 {
90950 switch (num7)
90951 {
90952 case 0:
90953 result = Lang.dialog(224);
90954 break;
90955 case 1:
90956 result = Lang.dialog(225);
90957 break;
90958 case 2:
90959 result = Lang.dialog(226);
90960 break;
90961 }
90962 }
90963 }
90964 else if (type == 160)
90965 {
90966 int num8 = Main.rand.Next(6);
90968 {
90969 result = specialEventText;
90970 }
90971 else if (flag4 && Main.rand.Next(6) == 0)
90972 {
90973 result = Lang.dialog(232);
90974 }
90975 else if (flag9 && Main.rand.Next(6) == 0)
90976 {
90977 result = Lang.dialog(236);
90978 }
90979 else
90980 {
90981 switch (num8)
90982 {
90983 case 0:
90984 result = Lang.dialog(231);
90985 break;
90986 case 1:
90987 result = Lang.dialog(233);
90988 break;
90989 case 2:
90990 result = Lang.dialog(234);
90991 break;
90992 case 3:
90993 result = Lang.dialog(235);
90994 break;
90995 case 4:
90996 result = Lang.dialog(240);
90997 break;
90998 case 5:
90999 result = Lang.dialog(241);
91000 break;
91001 }
91002 }
91003 }
91004 else if (type == 178)
91005 {
91006 int num9 = Main.rand.Next(5);
91007 if (HasSpecialEventText("Steampunker", out specialEventText))
91008 {
91009 result = specialEventText;
91010 }
91011 else if (Main.bloodMoon && Main.rand.Next(3) == 0)
91012 {
91013 result = Lang.dialog(245);
91014 }
91015 else if (flag13 && Main.rand.Next(6) == 0)
91016 {
91017 result = Lang.dialog(246);
91018 }
91019 else if (flag12 && Main.rand.Next(6) == 0)
91020 {
91021 result = Lang.dialog(247);
91022 }
91023 else
91024 {
91025 switch (num9)
91026 {
91027 case 0:
91028 result = Lang.dialog(242);
91029 break;
91030 case 1:
91031 result = Lang.dialog(243);
91032 break;
91033 case 2:
91034 result = Lang.dialog(244);
91035 break;
91036 case 3:
91037 result = Lang.dialog(248);
91038 break;
91039 case 4:
91040 result = Lang.dialog(249);
91041 break;
91042 }
91043 }
91044 }
91045 else if (type == 207)
91046 {
91047 int num10 = Main.rand.Next(3);
91048 if (HasSpecialEventText("DyeTrader", out specialEventText))
91049 {
91050 result = specialEventText;
91051 }
91052 else if (flag12 && Main.rand.Next(6) == 0)
91053 {
91054 result = Lang.dialog(260);
91055 }
91056 else
91057 {
91058 switch (num10)
91059 {
91060 case 0:
91061 result = Lang.dialog(257);
91062 break;
91063 case 1:
91064 result = Lang.dialog(258);
91065 break;
91066 case 2:
91067 result = Lang.dialog(259);
91068 break;
91069 }
91070 }
91071 }
91072 else if (type == 208)
91073 {
91074 if (freeCake)
91075 {
91076 int num11 = Main.rand.Next(1, 4);
91077 result = Language.GetTextValueWith("PartyGirlSpecialText.Cake" + num11, obj);
91078 }
91079 else
91080 {
91081 int num12 = Main.rand.Next(7);
91082 if (HasSpecialEventText("PartyGirl", out specialEventText))
91083 {
91084 result = specialEventText;
91085 }
91086 else if (DD2Event.DownedInvasionT1 && Main.rand.Next(5) == 0)
91087 {
91088 result = Language.GetTextValueWith("PartyGirlSpecialText.AfterDD2Tier1", obj);
91089 }
91090 else if (Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0)
91091 {
91092 result = Lang.dialog(268);
91093 }
91094 else if (flag15 && Main.rand.Next(5) == 0)
91095 {
91096 result = Lang.dialog(310);
91097 }
91098 else
91099 {
91100 switch (num12)
91101 {
91102 case 0:
91103 result = Lang.dialog(265);
91104 break;
91105 case 1:
91106 result = Lang.dialog(266);
91107 break;
91108 case 2:
91109 result = Lang.dialog(267);
91110 break;
91111 case 3:
91112 result = Lang.dialog(269);
91113 break;
91114 case 4:
91115 result = Lang.dialog(270);
91116 break;
91117 case 5:
91118 result = Lang.dialog(271);
91119 break;
91120 case 6:
91121 result = Lang.dialog(272);
91122 break;
91123 }
91124 }
91125 }
91126 }
91127 else if (type == 209)
91128 {
91130 {
91131 result = specialEventText;
91132 }
91133 else if (flag12 && Main.rand.Next(6) == 0)
91134 {
91135 result = Lang.dialog(284);
91136 }
91137 else if (flag11 && Main.rand.Next(6) == 0)
91138 {
91139 result = Lang.dialog(283);
91140 }
91141 else
91142 {
91143 LocalizedText[] array4 = Language.FindAll(Lang.CreateDialogFilter("CyborgChatter.", obj));
91144 int num13 = Main.rand.Next(5 + array4.Length);
91145 if (num13 >= 5)
91146 {
91147 result = array4[num13 - 5].FormatWith(obj);
91148 }
91149 else
91150 {
91151 switch (num13)
91152 {
91153 case 0:
91154 result = Lang.dialog(280);
91155 break;
91156 case 1:
91157 result = Lang.dialog(281);
91158 break;
91159 case 2:
91160 result = Lang.dialog(282);
91161 break;
91162 case 3:
91163 result = Lang.dialog(285);
91164 break;
91165 case 4:
91166 result = Lang.dialog(286);
91167 break;
91168 }
91169 }
91170 }
91171 }
91172 else if (type == 227)
91173 {
91174 int num14 = Main.rand.Next(5);
91176 {
91177 result = specialEventText;
91178 }
91179 else if (Main.hardMode && Main.rand.Next(7) == 0)
91180 {
91181 result = Lang.dialog(250);
91182 }
91183 else if (flag14 && Main.rand.Next(6) == 0)
91184 {
91185 result = Lang.dialog(251);
91186 }
91187 else
91188 {
91189 switch (num14)
91190 {
91191 case 0:
91192 result = Lang.dialog(252);
91193 break;
91194 case 1:
91195 result = Lang.dialog(253);
91196 break;
91197 case 2:
91198 result = Lang.dialog(254);
91199 break;
91200 case 3:
91201 result = Lang.dialog(255);
91202 break;
91203 case 4:
91204 result = Lang.dialog(256);
91205 break;
91206 }
91207 }
91208 }
91209 else if (type == 228)
91210 {
91211 int num15 = Main.rand.Next(4);
91212 if (HasSpecialEventText("WitchDoctor", out specialEventText))
91213 {
91214 result = specialEventText;
91215 }
91216 else if (flag2 && Main.rand.Next(4) == 0)
91217 {
91218 result = Lang.dialog(263);
91219 }
91220 else
91221 {
91222 switch (num15)
91223 {
91224 case 0:
91225 result = Lang.dialog(261);
91226 break;
91227 case 1:
91228 result = Lang.dialog(262);
91229 break;
91230 case 2:
91231 result = Lang.dialog(264);
91232 break;
91233 case 3:
91234 result = Language.GetTextValueWith("WitchDoctorSpecialText.AfterDD2Tier1", obj);
91235 break;
91236 }
91237 }
91238 }
91239 else if (type == 229)
91240 {
91241 LocalizedText[] array5 = Language.FindAll(Lang.CreateDialogFilter("PirateChatter.", obj));
91242 int num16 = Main.rand.Next(6 + array5.Length);
91243 if (num16 >= 6)
91244 {
91245 result = array5[num16 - 6].FormatWith(obj);
91246 }
91247 else if (HasSpecialEventText("Pirate", out specialEventText))
91248 {
91249 result = specialEventText;
91250 }
91251 else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(5) == 0)
91252 {
91253 result = Lang.dialog(276);
91254 }
91255 else
91256 {
91257 switch (num16)
91258 {
91259 case 0:
91260 result = Lang.dialog(273);
91261 break;
91262 case 1:
91263 result = Lang.dialog(274);
91264 break;
91265 case 2:
91266 result = Lang.dialog(275);
91267 break;
91268 case 3:
91269 result = Lang.dialog(277);
91270 break;
91271 case 4:
91272 result = Lang.dialog(278);
91273 break;
91274 case 5:
91275 result = Lang.dialog(279);
91276 break;
91277 }
91278 }
91279 }
91280 else if (type == 354)
91281 {
91282 result = Lang.dialog(Main.rand.Next(315, 319));
91283 }
91284 else if (type == 353)
91285 {
91287 {
91288 result = specialEventText;
91289 }
91290 else if (Main.bloodMoon)
91291 {
91292 switch (Main.rand.Next(3))
91293 {
91294 case 0:
91295 result = Lang.dialog(304);
91296 break;
91297 case 1:
91298 result = Lang.dialog(305);
91299 break;
91300 case 2:
91301 result = Lang.dialog(306);
91302 break;
91303 }
91304 }
91305 else if (Main.dayTime && Main.time < 16200.0 && Main.rand.Next(3) == 0)
91306 {
91307 result = Lang.dialog(311);
91308 }
91309 else if (Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0)
91310 {
91311 switch (Main.rand.Next(2))
91312 {
91313 case 0:
91314 result = Lang.dialog(293);
91315 break;
91316 case 1:
91317 result = Lang.dialog(300);
91318 break;
91319 }
91320 }
91321 else if (!Main.player[Main.myPlayer].Male && Main.rand.Next(3) == 0)
91322 {
91323 switch (Main.rand.Next(3))
91324 {
91325 case 0:
91326 result = Lang.dialog(291);
91327 break;
91328 case 1:
91329 result = Lang.dialog(292);
91330 break;
91331 case 2:
91332 result = Lang.dialog(312);
91333 break;
91334 }
91335 }
91336 else if (flag14 && flag7 && flag2 && flag3 && Main.rand.Next(5) == 0)
91337 {
91338 result = Lang.dialog(307);
91339 }
91340 else if (flag14 && Main.rand.Next(5) == 0)
91341 {
91342 result = Lang.dialog(302);
91343 }
91344 else if (flag6 && Main.rand.Next(5) == 0)
91345 {
91346 result = Lang.dialog(303);
91347 }
91348 else if (flag13 && Main.rand.Next(5) == 0)
91349 {
91350 result = Lang.dialog(308);
91351 }
91352 else
91353 {
91354 LocalizedText[] array6 = Language.FindAll(Lang.CreateDialogFilter("StylistChatter.", obj));
91355 int num17 = ((Main.moonPhase < 3) ? 5 : 4);
91356 int num18 = Main.rand.Next(num17 + array6.Length);
91357 if (num18 >= num17)
91358 {
91359 result = array6[num18 - num17].FormatWith(obj);
91360 }
91361 else if (Main.moonPhase < 3)
91362 {
91363 switch (num18)
91364 {
91365 case 0:
91366 result = Lang.dialog(287);
91367 break;
91368 case 1:
91369 result = Lang.dialog(288);
91370 break;
91371 case 2:
91372 result = Lang.dialog(289);
91373 break;
91374 case 3:
91375 result = Lang.dialog(290);
91376 break;
91377 case 4:
91378 result = Lang.dialog(294);
91379 break;
91380 }
91381 }
91382 else if (Main.moonPhase < 6)
91383 {
91384 switch (num18)
91385 {
91386 case 0:
91387 result = Lang.dialog(295);
91388 break;
91389 case 1:
91390 result = Lang.dialog(296);
91391 break;
91392 case 2:
91393 result = Lang.dialog(297);
91394 break;
91395 case 3:
91396 result = Lang.dialog(298);
91397 break;
91398 }
91399 }
91400 else
91401 {
91402 switch (num18)
91403 {
91404 case 0:
91405 result = Lang.dialog(299);
91406 break;
91407 case 1:
91408 result = Lang.dialog(301);
91409 break;
91410 case 2:
91411 result = Lang.dialog(313);
91412 break;
91413 case 3:
91414 result = Lang.dialog(314);
91415 break;
91416 }
91417 }
91418 }
91419 }
91420 else if (type == 368)
91421 {
91422 result = (HasSpecialEventText("TravellingMerchant", out specialEventText) ? specialEventText : ((flag16 && Main.rand.Next(5) == 0) ? Lang.dialog(319) : ((flag && Main.rand.Next(5) == 0) ? Lang.dialog(320) : ((!flag9 || Main.rand.Next(5) != 0) ? Lang.dialog(Main.rand.Next(322, 331)) : Lang.dialog(321)))));
91423 }
91424 else if (type == 376)
91425 {
91426 result = Lang.dialog(Main.rand.Next(353, 356));
91427 }
91428 else if (type == 369)
91429 {
91430 result = ((Main.rand.Next(5) == 0 && Main.LocalPlayer.anglerQuestsFinished > 1) ? Lang.AnglerQuestCountChat(this) : (HasSpecialEventText("Angler", out specialEventText) ? specialEventText : (Main.bloodMoon ? ((Main.rand.Next(3) == 0) ? Language.SelectRandom(Lang.CreateDialogFilter("AnglerSpecialText.BloodMoonFishing")).FormatWith(obj) : (Main.anglerQuestFinished ? Lang.dialog(Main.rand.Next(350, 353)) : Lang.dialog(Main.rand.Next(348, 350)))) : ((!Main.anglerQuestFinished) ? Lang.dialog(Main.rand.Next(334, 338)) : ((!flag4 || Main.rand.Next(5) != 0) ? Language.SelectRandom(Lang.CreateDialogFilter("AnglerChatter.", obj)).FormatWith(obj) : Lang.dialog(347))))));
91431 }
91432 else if (type == 453)
91433 {
91434 result = ((!HasSpecialEventText("SkeletonMerchant", out specialEventText)) ? Lang.dialog(Main.rand.Next(356, 364)) : specialEventText);
91435 }
91436 else if (type == 441)
91437 {
91438 result = (HasSpecialEventText("TaxCollector", out specialEventText) ? specialEventText : ((Main.rand.Next(6) == 0 && flag4) ? Lang.dialog(371) : ((Main.rand.Next(6) == 0 && flag3) ? Lang.dialog(372) : ((Main.rand.Next(6) == 0 && flag6) ? Lang.dialog(373) : ((!(Main.rand.Next(6) == 0 && flag)) ? Lang.dialog(Main.rand.Next(364, 370)) : Lang.dialog(374))))));
91439 }
91440 else if (type == 579)
91441 {
91442 result = Language.GetTextValue("BartenderSpecialText.FirstMeeting");
91443 }
91444 else if (type == 550)
91445 {
91446 result = ((!HasSpecialEventText("Bartender", out specialEventText)) ? Lang.BartenderChat(this) : specialEventText);
91447 }
91448 else if (type == 589)
91449 {
91450 result = ((Main.rand.Next(2) != 0) ? Language.GetTextValue("GolferSpecialText.FirstMeeting2") : Language.GetTextValue("GolferSpecialText.FirstMeeting1"));
91451 }
91452 else if (type == 588)
91453 {
91454 if (Main.rand.Next(3) != 0 && HasSpecialEventText("Golfer", out specialEventText))
91455 {
91456 result = specialEventText;
91457 }
91458 else if (Main.rand.Next(3) == 0)
91459 {
91460 string text2 = ((Main.LocalPlayer.golferScoreAccumulated >= 2000) ? "GolferQuestsChatterMaster" : ((Main.LocalPlayer.golferScoreAccumulated >= 1000) ? "GolferQuestsChatterJourneyman" : ((Main.LocalPlayer.golferScoreAccumulated < 500) ? "GolferQuestsChatterBeginner" : "GolferQuestsChatterApprentice")));
91461 result = Language.SelectRandom(Lang.CreateDialogFilter(text2 + ".")).FormatWith(obj);
91462 }
91463 else
91464 {
91465 result = Lang.GolferChat(this);
91466 }
91467 }
91468 else if (type == 633)
91469 {
91470 result = ((ShouldBestiaryGirlBeLycantrope() || !HasSpecialEventText("BestiaryGirl", out specialEventText)) ? Lang.BestiaryGirlChat(this) : specialEventText);
91471 }
91472 else if (type == 663)
91473 {
91474 result = ((!HasSpecialEventText("Princess", out specialEventText)) ? Lang.PrincessChat(this) : specialEventText);
91475 }
91476 else if (type == 637)
91477 {
91478 result = ((!HasSpecialEventText("Cat", out specialEventText)) ? Lang.CatChat(this) : specialEventText);
91479 }
91480 else if (type == 638)
91481 {
91482 result = ((!HasSpecialEventText("Dog", out specialEventText)) ? Lang.DogChat(this) : specialEventText);
91483 }
91484 else if (type == 656)
91485 {
91486 result = ((!HasSpecialEventText("Bunny", out specialEventText)) ? Lang.BunnyChat(this) : specialEventText);
91487 }
91488 else if (NPCID.Sets.IsTownSlime[type])
91489 {
91490 result = ((!HasSpecialEventText("Slime", out specialEventText)) ? Lang.SlimeChat(this) : specialEventText);
91491 }
91492 return result;
91493 }
static bool[] IsTownSlime
Definition NPCID.cs:4101
static LocalizedText[] FindAll(Regex regex)
Definition Language.cs:55
static LocalizedText SelectRandom(LanguageSearchFilter filter, UnifiedRandom random=null)
Definition Language.cs:65
static string GetTextValue(string key)
Definition Language.cs:15
static string GetTextValueWith(string key, object obj)
Definition Language.cs:40
bool ShouldBestiaryGirlBeLycantrope()
Definition NPC.cs:90417
bool HasLuckTextForWizard(out string specialEventText)
Definition NPC.cs:91500
static bool downedBoss2
Definition NPC.cs:347
static bool downedBoss1
Definition NPC.cs:345
static bool downedMoonlord
Definition NPC.cs:383
static bool freeCake
Definition NPC.cs:119
static bool PreventJojaColaDialog
Definition NPC.cs:636
int type
Definition NPC.cs:445
static int RerollDryadText
Definition NPC.cs:638
bool HasSpecialEventText(string specialTextCategoryKey, out string specialEventText)
Definition NPC.cs:91519
bool homeless
Definition NPC.cs:541
static bool downedBoss3
Definition NPC.cs:349

References Terraria.Lang.AnglerQuestCountChat(), Terraria.Main.anglerQuestFinished, System.array, Terraria.Lang.BartenderChat(), Terraria.Lang.BestiaryGirlChat(), Terraria.Main.bloodMoon, Terraria.Lang.BunnyChat(), Terraria.Lang.CatChat(), Terraria.Lang.CreateDialogFilter(), Terraria.Lang.CreateDialogSubstitutionObject(), Terraria.WorldGen.crimson, Terraria.Main.dayTime, Terraria.Lang.dialog(), Terraria.Lang.DogChat(), Terraria.GameContent.Events.DD2Event.DownedInvasionT1, Terraria.GameContent.Events.DD2Event.DownedInvasionT2, Terraria.Localization.Language.FindAll(), Terraria.Recipe.FindRecipes(), Terraria.Localization.Language.GetTextValue(), Terraria.Localization.Language.GetTextValueWith(), Terraria.Lang.GolferChat(), Terraria.Main.hardMode, Terraria.ID.NPCID.Sets.IsTownSlime, Terraria.Main.LocalPlayer, Terraria.Main.moonPhase, Terraria.Main.myPlayer, Terraria.Main.npc, System.obj, Terraria.GameContent.Events.DD2Event.Ongoing, Terraria.Main.player, Terraria.Lang.PrincessChat(), Terraria.Main.rand, Terraria.Main.remixWorld, Terraria.Localization.Language.SelectRandom(), Terraria.Lang.SlimeChat(), System.text, Terraria.Main.time, and System.type.