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

◆ SpawnNPC()

static void Terraria.NPC.SpawnNPC ( )
inlinestatic

Definition at line 72591 of file NPC.cs.

72592 {
72593 if (noSpawnCycle)
72594 {
72595 noSpawnCycle = false;
72596 return;
72597 }
72599 bool flag = (double)Main.windSpeedTarget < -0.4 || (double)Main.windSpeedTarget > 0.4;
72600 RevengeManager.CheckRespawns();
72601 bool flag2 = false;
72602 bool flag3 = false;
72603 int num = 0;
72604 int num2 = 0;
72605 int num3 = 0;
72606 int num4 = 0;
72607 for (int i = 0; i < 255; i++)
72608 {
72609 if (Main.player[i].active)
72610 {
72611 num4++;
72612 }
72613 }
72614 float num5 = 0f;
72615 for (int j = 0; j < 200; j++)
72616 {
72617 if (Main.npc[j].active)
72618 {
72619 switch (Main.npc[j].type)
72620 {
72621 case 315:
72622 case 325:
72623 case 327:
72624 case 328:
72625 case 344:
72626 case 345:
72627 case 346:
72628 num5 += Main.npc[j].npcSlots;
72629 break;
72630 }
72631 }
72632 }
72633 float num6 = (int)((float)defaultMaxSpawns * (2f + 0.3f * (float)num4));
72634 for (int k = 0; k < 255; k++)
72635 {
72636 if (!Main.player[k].active || Main.player[k].dead)
72637 {
72638 continue;
72639 }
72640 flag3 = false;
72641 if (Main.player[k].isNearNPC(398, MoonLordFightingDistance))
72642 {
72643 continue;
72644 }
72645 if (Main.slimeRain)
72646 {
72648 }
72649 bool flag4 = false;
72650 bool flag5 = false;
72651 bool flag6 = false;
72652 bool flag7 = false;
72653 bool flag8 = false;
72654 bool flag9 = false;
72655 bool flag10 = false;
72656 bool flag11 = false;
72657 bool flag12 = false;
72658 bool flag13 = false;
72659 bool flag14 = downedPlantBoss && Main.hardMode;
72660 bool isItAHappyWindyDay = Main.IsItAHappyWindyDay;
72661 if (Main.player[k].active && Main.invasionType > 0 && Main.invasionDelay == 0 && Main.invasionSize > 0 && ((double)Main.player[k].position.Y < Main.worldSurface * 16.0 + (double)sHeight || Main.remixWorld))
72662 {
72663 int num7 = 3000;
72664 if ((double)Main.player[k].position.X > Main.invasionX * 16.0 - (double)num7 && (double)Main.player[k].position.X < Main.invasionX * 16.0 + (double)num7)
72665 {
72666 flag6 = true;
72667 }
72668 else if (Main.invasionX >= (double)(Main.maxTilesX / 2 - 5) && Main.invasionX <= (double)(Main.maxTilesX / 2 + 5))
72669 {
72670 for (int l = 0; l < 200; l++)
72671 {
72672 if (Main.npc[l].townNPC && Math.Abs(Main.player[k].position.X - Main.npc[l].Center.X) < (float)num7)
72673 {
72674 if (Main.rand.Next(3) != 0)
72675 {
72676 flag6 = true;
72677 }
72678 break;
72679 }
72680 }
72681 }
72682 }
72683 if (Main.player[k].ZoneTowerSolar || Main.player[k].ZoneTowerNebula || Main.player[k].ZoneTowerVortex || Main.player[k].ZoneTowerStardust)
72684 {
72685 flag6 = true;
72686 }
72687 int num8 = (int)(Main.player[k].position.X + (float)(Main.player[k].width / 2)) / 16;
72688 int num9 = (int)(Main.player[k].position.Y + (float)(Main.player[k].height / 2)) / 16;
72689 if (Main.wallHouse[Main.tile[num8, num9].wall])
72690 {
72691 flag5 = true;
72692 }
72693 if (Main.tile[num8, num9].wall == 87)
72694 {
72695 flag4 = true;
72696 }
72697 flag2 = false;
72700 if (Main.hardMode)
72701 {
72702 spawnRate = (int)((double)defaultSpawnRate * 0.9);
72704 }
72705 if (Main.player[k].position.Y > (float)(Main.UnderworldLayer * 16))
72706 {
72707 maxSpawns = (int)((float)maxSpawns * 2f);
72708 }
72709 else if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
72710 {
72711 if (Main.remixWorld)
72712 {
72713 if (Main.hardMode)
72714 {
72715 spawnRate = (int)((double)spawnRate * 0.45);
72716 maxSpawns = (int)((float)maxSpawns * 1.8f);
72717 }
72718 else
72719 {
72720 spawnRate = (int)((double)spawnRate * 0.5);
72721 maxSpawns = (int)((float)maxSpawns * 1.7f);
72722 }
72723 }
72724 else
72725 {
72726 spawnRate = (int)((double)spawnRate * 0.4);
72727 maxSpawns = (int)((float)maxSpawns * 1.9f);
72728 }
72729 }
72730 else if ((double)Main.player[k].position.Y > Main.worldSurface * 16.0 + (double)sHeight)
72731 {
72732 if (Main.remixWorld)
72733 {
72734 spawnRate = (int)((double)spawnRate * 0.4);
72735 maxSpawns = (int)((float)maxSpawns * 1.9f);
72736 }
72737 else if (Main.hardMode)
72738 {
72739 spawnRate = (int)((double)spawnRate * 0.45);
72740 maxSpawns = (int)((float)maxSpawns * 1.8f);
72741 }
72742 else
72743 {
72744 spawnRate = (int)((double)spawnRate * 0.5);
72745 maxSpawns = (int)((float)maxSpawns * 1.7f);
72746 }
72747 }
72748 else if (Main.remixWorld)
72749 {
72750 if (!Main.dayTime)
72751 {
72752 spawnRate = (int)((double)spawnRate * 0.6);
72753 maxSpawns = (int)((float)maxSpawns * 1.3f);
72754 }
72755 }
72756 else if (!Main.dayTime)
72757 {
72758 spawnRate = (int)((double)spawnRate * 0.6);
72759 maxSpawns = (int)((float)maxSpawns * 1.3f);
72760 if (Main.bloodMoon)
72761 {
72762 spawnRate = (int)((double)spawnRate * 0.3);
72763 maxSpawns = (int)((float)maxSpawns * 1.8f);
72764 }
72765 if ((Main.pumpkinMoon || Main.snowMoon) && (double)Main.player[k].position.Y < Main.worldSurface * 16.0)
72766 {
72767 spawnRate = (int)((double)spawnRate * 0.2);
72768 maxSpawns *= 2;
72769 }
72770 }
72771 else if (Main.dayTime && Main.eclipse)
72772 {
72773 spawnRate = (int)((double)spawnRate * 0.2);
72774 maxSpawns = (int)((float)maxSpawns * 1.9f);
72775 }
72776 if (Main.remixWorld)
72777 {
72778 if (!Main.dayTime)
72779 {
72780 if (Main.bloodMoon)
72781 {
72782 spawnRate = (int)((double)spawnRate * 0.3);
72783 maxSpawns = (int)((float)maxSpawns * 1.8f);
72784 if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
72785 {
72786 spawnRate = (int)((double)spawnRate * 0.6);
72787 }
72788 }
72789 if (Main.pumpkinMoon || Main.snowMoon)
72790 {
72791 spawnRate = (int)((double)spawnRate * 0.2);
72792 maxSpawns *= 2;
72793 if ((double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
72794 {
72795 spawnRate = (int)((double)spawnRate * 0.6);
72796 }
72797 }
72798 }
72799 else if (Main.dayTime && Main.eclipse)
72800 {
72801 spawnRate = (int)((double)spawnRate * 0.2);
72802 maxSpawns = (int)((float)maxSpawns * 1.9f);
72803 }
72804 }
72805 if (Main.player[k].ZoneSnow && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface)
72806 {
72807 maxSpawns = (int)((float)maxSpawns + (float)maxSpawns * Main.cloudAlpha);
72808 spawnRate = (int)((float)spawnRate * (1f - Main.cloudAlpha + 1f) / 2f);
72809 }
72810 if (Main.drunkWorld && Main.tile[num8, num9].wall == 86)
72811 {
72812 spawnRate = (int)((double)spawnRate * 0.3);
72813 maxSpawns = (int)((float)maxSpawns * 1.8f);
72814 }
72815 if (Main.player[k].ZoneDungeon)
72816 {
72817 spawnRate = (int)((double)spawnRate * 0.3);
72818 maxSpawns = (int)((float)maxSpawns * 1.8f);
72819 }
72820 else if (Main.player[k].ZoneSandstorm)
72821 {
72822 spawnRate = (int)((float)spawnRate * (Main.hardMode ? 0.4f : 0.9f));
72823 maxSpawns = (int)((float)maxSpawns * (Main.hardMode ? 1.5f : 1.2f));
72824 }
72825 else if (Main.player[k].ZoneUndergroundDesert)
72826 {
72827 spawnRate = (int)((float)spawnRate * 0.2f);
72828 maxSpawns = (int)((float)maxSpawns * 3f);
72829 }
72830 else if (Main.player[k].ZoneJungle)
72831 {
72832 if (Main.player[k].townNPCs == 0f)
72833 {
72834 spawnRate = (int)((double)spawnRate * 0.4);
72835 maxSpawns = (int)((float)maxSpawns * 1.5f);
72836 }
72837 else if (Main.player[k].townNPCs == 1f)
72838 {
72839 spawnRate = (int)((double)spawnRate * 0.55);
72840 maxSpawns = (int)((double)maxSpawns * 1.4);
72841 }
72842 else if (Main.player[k].townNPCs == 2f)
72843 {
72844 spawnRate = (int)((double)spawnRate * 0.7);
72845 maxSpawns = (int)((float)maxSpawns * 1.3f);
72846 }
72847 else
72848 {
72849 spawnRate = (int)((double)spawnRate * 0.85);
72850 maxSpawns = (int)((float)maxSpawns * 1.2f);
72851 }
72852 }
72853 else if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
72854 {
72855 spawnRate = (int)((double)spawnRate * 0.65);
72856 maxSpawns = (int)((float)maxSpawns * 1.3f);
72857 }
72858 else if (Main.player[k].ZoneMeteor)
72859 {
72860 spawnRate = (int)((double)spawnRate * 0.4);
72861 maxSpawns = (int)((float)maxSpawns * 1.1f);
72862 }
72863 if (flag4)
72864 {
72865 spawnRate = (int)((float)spawnRate * 0.8f);
72866 maxSpawns = (int)((float)maxSpawns * 1.2f);
72867 if (Main.remixWorld)
72868 {
72869 spawnRate = (int)((double)spawnRate * 0.4);
72870 maxSpawns = (int)((float)maxSpawns * 1.5f);
72871 }
72872 }
72873 if (Main.remixWorld && (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson) && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface)
72874 {
72875 spawnRate = (int)((double)spawnRate * 0.5);
72876 maxSpawns *= 2;
72877 }
72878 if (Main.player[k].ZoneHallow && (double)Main.player[k].position.Y > Main.rockLayer * 16.0 + (double)sHeight)
72879 {
72880 spawnRate = (int)((double)spawnRate * 0.65);
72881 maxSpawns = (int)((float)maxSpawns * 1.3f);
72882 }
72883 if (Main.wofNPCIndex >= 0 && Main.player[k].position.Y > (float)(Main.UnderworldLayer * 16))
72884 {
72885 maxSpawns = (int)((float)maxSpawns * 0.3f);
72886 spawnRate *= 3;
72887 }
72888 if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.2)
72889 {
72890 spawnRate = (int)((float)spawnRate * 0.6f);
72891 }
72892 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.4)
72893 {
72894 spawnRate = (int)((float)spawnRate * 0.7f);
72895 }
72896 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.6)
72897 {
72898 spawnRate = (int)((float)spawnRate * 0.8f);
72899 }
72900 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.8)
72901 {
72902 spawnRate = (int)((float)spawnRate * 0.9f);
72903 }
72904 if ((double)(Main.player[k].position.Y / 16f) > (Main.worldSurface + Main.rockLayer) / 2.0 || Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
72905 {
72906 if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.2)
72907 {
72908 spawnRate = (int)((float)spawnRate * 0.7f);
72909 }
72910 else if ((double)Main.player[k].nearbyActiveNPCs < (double)maxSpawns * 0.4)
72911 {
72912 spawnRate = (int)((float)spawnRate * 0.9f);
72913 }
72914 }
72915 int maxValue = 65;
72916 if (Main.remixWorld && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface && (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson))
72917 {
72918 maxValue = 25;
72919 spawnRate = (int)((double)spawnRate * 0.8);
72920 maxSpawns *= 2;
72921 }
72922 if (Main.player[k].invis)
72923 {
72924 spawnRate = (int)((float)spawnRate * 1.2f);
72925 maxSpawns = (int)((float)maxSpawns * 0.8f);
72926 }
72927 if (Main.player[k].calmed)
72928 {
72929 spawnRate = (int)((float)spawnRate * 1.65f);
72930 maxSpawns = (int)((float)maxSpawns * 0.6f);
72931 }
72932 if (Main.player[k].sunflower)
72933 {
72934 spawnRate = (int)((float)spawnRate * 1.2f);
72935 maxSpawns = (int)((float)maxSpawns * 0.8f);
72936 }
72937 if (Main.player[k].anglerSetSpawnReduction)
72938 {
72939 spawnRate = (int)((float)spawnRate * 1.3f);
72940 maxSpawns = (int)((float)maxSpawns * 0.7f);
72941 }
72942 if (Main.player[k].enemySpawns)
72943 {
72944 spawnRate = (int)((double)spawnRate * 0.5);
72945 maxSpawns = (int)((float)maxSpawns * 2f);
72946 }
72947 if (Main.player[k].ZoneWaterCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 148)
72948 {
72949 if (!Main.player[k].ZonePeaceCandle && Main.player[k].inventory[Main.player[k].selectedItem].type != 3117)
72950 {
72951 spawnRate = (int)((double)spawnRate * 0.75);
72952 maxSpawns = (int)((float)maxSpawns * 1.5f);
72953 }
72954 }
72955 else if (Main.player[k].ZonePeaceCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 3117)
72956 {
72957 spawnRate = (int)((double)spawnRate * 1.3);
72958 maxSpawns = (int)((float)maxSpawns * 0.7f);
72959 }
72960 if (Main.player[k].ZoneShadowCandle || Main.player[k].inventory[Main.player[k].selectedItem].type == 5322)
72961 {
72962 Main.player[k].townNPCs = 0f;
72963 }
72964 if (Main.player[k].ZoneWaterCandle && (double)(Main.player[k].position.Y / 16f) < Main.worldSurface * 0.3499999940395355)
72965 {
72966 spawnRate = (int)((double)spawnRate * 0.5);
72967 }
72968 if (Main.player[k].isNearFairy())
72969 {
72970 spawnRate = (int)((float)spawnRate * 1.2f);
72971 maxSpawns = (int)((float)maxSpawns * 0.8f);
72972 }
72973 if ((double)spawnRate < (double)defaultSpawnRate * 0.1)
72974 {
72975 spawnRate = (int)((double)defaultSpawnRate * 0.1);
72976 }
72977 if (maxSpawns > defaultMaxSpawns * 3)
72978 {
72980 }
72981 if (Main.getGoodWorld)
72982 {
72983 spawnRate = (int)((float)spawnRate * 0.8f);
72984 maxSpawns = (int)((float)maxSpawns * 1.2f);
72985 }
72986 if (Main.GameModeInfo.IsJourneyMode)
72987 {
72989 if (power != null && power.GetIsUnlocked())
72990 {
72991 if (power.GetShouldDisableSpawnsFor(k))
72992 {
72993 continue;
72994 }
72995 if (power.GetRemappedSliderValueFor(k, out var num10))
72996 {
72997 spawnRate = (int)((float)spawnRate / num10);
72998 maxSpawns = (int)((float)maxSpawns * num10);
72999 }
73000 }
73001 }
73002 if ((Main.pumpkinMoon || Main.snowMoon) && (Main.remixWorld || (double)Main.player[k].position.Y < Main.worldSurface * 16.0))
73003 {
73004 maxSpawns = (int)((double)defaultMaxSpawns * (2.0 + 0.3 * (double)num4));
73005 spawnRate = 20;
73006 }
73007 if (DD2Event.Ongoing && Main.player[k].ZoneOldOneArmy)
73008 {
73011 }
73012 if (flag6)
73013 {
73014 maxSpawns = (int)((double)defaultMaxSpawns * (2.0 + 0.3 * (double)num4));
73015 spawnRate = 20;
73016 }
73017 if (Main.player[k].ZoneDungeon && !downedBoss3)
73018 {
73019 spawnRate = 10;
73020 }
73021 if (!flag6 && ((!Main.bloodMoon && !Main.pumpkinMoon && !Main.snowMoon) || Main.dayTime) && (!Main.eclipse || !Main.dayTime) && !Main.player[k].ZoneDungeon && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneMeteor && !Main.player[k].ZoneOldOneArmy)
73022 {
73023 if (Main.player[k].Center.Y / 16f > (float)Main.UnderworldLayer && (!Main.remixWorld || !((double)(Main.player[k].Center.X / 16f) > (double)Main.maxTilesX * 0.39 + 50.0) || !((double)(Main.player[k].Center.X / 16f) < (double)Main.maxTilesX * 0.61)))
73024 {
73025 if (Main.player[k].townNPCs == 1f)
73026 {
73027 if (Main.rand.Next(2) == 0)
73028 {
73029 flag5 = true;
73030 }
73031 if (Main.rand.Next(10) == 0)
73032 {
73033 flag12 = true;
73034 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
73035 }
73036 else
73037 {
73038 spawnRate = (int)((double)(float)spawnRate * 1.25);
73039 }
73040 }
73041 else if (Main.player[k].townNPCs == 2f)
73042 {
73043 if (Main.rand.Next(4) != 0)
73044 {
73045 flag5 = true;
73046 }
73047 if (Main.rand.Next(5) == 0)
73048 {
73049 flag12 = true;
73050 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
73051 }
73052 else
73053 {
73054 spawnRate = (int)((double)(float)spawnRate * 1.5);
73055 }
73056 }
73057 else if (Main.player[k].townNPCs >= 3f)
73058 {
73059 if (Main.rand.Next(10) != 0)
73060 {
73061 flag5 = true;
73062 }
73063 if (Main.rand.Next(3) == 0)
73064 {
73065 flag12 = true;
73066 maxSpawns = (int)((double)(float)maxSpawns * 0.5);
73067 }
73068 else
73069 {
73070 spawnRate = (int)((float)spawnRate * 2f);
73071 }
73072 }
73073 }
73074 else if (Main.player[k].townNPCs == 1f)
73075 {
73076 flag5 = true;
73077 if (Main.player[k].ZoneGraveyard)
73078 {
73079 spawnRate = (int)((double)(float)spawnRate * 1.66);
73080 if (Main.rand.Next(9) == 1)
73081 {
73082 flag12 = true;
73083 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73084 }
73085 }
73086 else if (Main.rand.Next(3) == 1)
73087 {
73088 flag12 = true;
73089 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73090 }
73091 else
73092 {
73093 spawnRate = (int)((float)spawnRate * 2f);
73094 }
73095 }
73096 else if (Main.player[k].townNPCs == 2f)
73097 {
73098 flag5 = true;
73099 if (Main.player[k].ZoneGraveyard)
73100 {
73101 spawnRate = (int)((double)(float)spawnRate * 2.33);
73102 if (Main.rand.Next(6) == 1)
73103 {
73104 flag12 = true;
73105 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73106 }
73107 }
73108 else if (Main.rand.Next(3) != 0)
73109 {
73110 flag12 = true;
73111 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73112 }
73113 else
73114 {
73115 spawnRate = (int)((float)spawnRate * 3f);
73116 }
73117 }
73118 else if (Main.player[k].townNPCs >= 3f)
73119 {
73120 flag5 = true;
73121 if (Main.player[k].ZoneGraveyard)
73122 {
73123 spawnRate = (int)((float)spawnRate * 3f);
73124 if (Main.rand.Next(3) == 1)
73125 {
73126 flag12 = true;
73127 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73128 }
73129 }
73130 else
73131 {
73132 if (!Main.expertMode || Main.rand.Next(30) != 0)
73133 {
73134 flag12 = true;
73135 }
73136 maxSpawns = (int)((double)(float)maxSpawns * 0.6);
73137 }
73138 }
73139 }
73140 bool flag15 = false;
73141 if (Main.player[k].active && !Main.player[k].dead && Main.player[k].nearbyActiveNPCs < (float)maxSpawns && Main.rand.Next(spawnRate) == 0)
73142 {
73143 bool flag16 = Main.player[k].ZoneTowerNebula || Main.player[k].ZoneTowerSolar || Main.player[k].ZoneTowerStardust || Main.player[k].ZoneTowerVortex;
73144 spawnRangeX = (int)((double)(sWidth / 16) * 0.7);
73145 spawnRangeY = (int)((double)(sHeight / 16) * 0.7);
73146 safeRangeX = (int)((double)(sWidth / 16) * 0.52);
73147 safeRangeY = (int)((double)(sHeight / 16) * 0.52);
73148 if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254 || Main.player[k].inventory[Main.player[k].selectedItem].type == 1299 || Main.player[k].scope)
73149 {
73150 float num11 = 1.5f;
73151 if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254 && Main.player[k].scope)
73152 {
73153 num11 = 1.25f;
73154 }
73155 else if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1254)
73156 {
73157 num11 = 1.5f;
73158 }
73159 else if (Main.player[k].inventory[Main.player[k].selectedItem].type == 1299)
73160 {
73161 num11 = 1.5f;
73162 }
73163 else if (Main.player[k].scope)
73164 {
73165 num11 = 2f;
73166 }
73167 spawnRangeX += (int)((double)(sWidth / 16) * 0.5 / (double)num11);
73168 spawnRangeY += (int)((double)(sHeight / 16) * 0.5 / (double)num11);
73169 safeRangeX += (int)((double)(sWidth / 16) * 0.5 / (double)num11);
73170 safeRangeY += (int)((double)(sHeight / 16) * 0.5 / (double)num11);
73171 }
73172 int num12 = (int)(Main.player[k].position.X / 16f) - spawnRangeX;
73173 int num13 = (int)(Main.player[k].position.X / 16f) + spawnRangeX;
73174 int num14 = (int)(Main.player[k].position.Y / 16f) - spawnRangeY;
73175 int num15 = (int)(Main.player[k].position.Y / 16f) + spawnRangeY;
73176 int num16 = (int)(Main.player[k].position.X / 16f) - safeRangeX;
73177 int num17 = (int)(Main.player[k].position.X / 16f) + safeRangeX;
73178 int num18 = (int)(Main.player[k].position.Y / 16f) - safeRangeY;
73179 int num19 = (int)(Main.player[k].position.Y / 16f) + safeRangeY;
73180 if (num12 < 0)
73181 {
73182 num12 = 0;
73183 }
73184 if (num13 > Main.maxTilesX)
73185 {
73186 num13 = Main.maxTilesX;
73187 }
73188 if (num14 < 0)
73189 {
73190 num14 = 0;
73191 }
73192 if (num15 > Main.maxTilesY)
73193 {
73194 num15 = Main.maxTilesY;
73195 }
73196 for (int m = 0; m < 50; m++)
73197 {
73198 int num20 = Main.rand.Next(num12, num13);
73199 int num21 = Main.rand.Next(num14, num15);
73200 if (!Main.tile[num20, num21].nactive() || !Main.tileSolid[Main.tile[num20, num21].type])
73201 {
73202 if (!flag16 && Main.wallHouse[Main.tile[num20, num21].wall])
73203 {
73204 continue;
73205 }
73206 if (!flag6 && (double)num21 < Main.worldSurface * 0.3499999940395355 && !flag12 && ((double)num20 < (double)Main.maxTilesX * 0.45 || (double)num20 > (double)Main.maxTilesX * 0.55 || Main.hardMode))
73207 {
73208 num3 = Main.tile[num20, num21].type;
73209 num = num20;
73210 num2 = num21;
73211 flag2 = true;
73212 flag3 = true;
73213 }
73214 else if (!flag6 && (double)num21 < Main.worldSurface * 0.44999998807907104 && !flag12 && Main.hardMode && Main.rand.Next(10) == 0)
73215 {
73216 num3 = Main.tile[num20, num21].type;
73217 num = num20;
73218 num2 = num21;
73219 flag2 = true;
73220 flag3 = true;
73221 }
73222 else
73223 {
73224 for (int n = num21; n < Main.maxTilesY && n < num15; n++)
73225 {
73226 if (Main.tile[num20, n].nactive() && Main.tileSolid[Main.tile[num20, n].type])
73227 {
73229 {
73230 num3 = Main.tile[num20, n].type;
73231 num = num20;
73232 num2 = n;
73233 flag2 = true;
73234 }
73235 break;
73236 }
73237 }
73238 }
73239 if (Main.player[k].ZoneShadowCandle)
73240 {
73241 flag5 = false;
73242 }
73243 else if (!flag3 && Main.player[k].afkCounter >= AFKTimeNeededForNoWorms)
73244 {
73245 flag5 = true;
73246 }
73247 if (flag2)
73248 {
73249 int num22 = num - spawnSpaceX / 2;
73250 int num23 = num + spawnSpaceX / 2;
73251 int num24 = num2 - spawnSpaceY;
73252 int num25 = num2;
73253 if (num22 < 0)
73254 {
73255 flag2 = false;
73256 }
73257 if (num23 > Main.maxTilesX)
73258 {
73259 flag2 = false;
73260 }
73261 if (num24 < 0)
73262 {
73263 flag2 = false;
73264 }
73265 if (num25 > Main.maxTilesY)
73266 {
73267 flag2 = false;
73268 }
73269 if (flag2)
73270 {
73271 for (int num26 = num22; num26 < num23; num26++)
73272 {
73273 for (int num27 = num24; num27 < num25; num27++)
73274 {
73275 if (Main.tile[num26, num27].nactive() && Main.tileSolid[Main.tile[num26, num27].type])
73276 {
73277 flag2 = false;
73278 break;
73279 }
73280 if (Main.tile[num26, num27].lava())
73281 {
73282 flag2 = false;
73283 break;
73284 }
73285 }
73286 }
73287 }
73288 if (num >= num16 && num <= num17)
73289 {
73290 flag15 = true;
73291 }
73292 }
73293 }
73294 if (flag2 || flag2)
73295 {
73296 break;
73297 }
73298 }
73299 }
73300 if (flag2)
73301 {
73302 Rectangle rectangle = new Rectangle(num * 16, num2 * 16, 16, 16);
73303 for (int num28 = 0; num28 < 255; num28++)
73304 {
73305 if (Main.player[num28].active)
73306 {
73307 Rectangle rectangle2 = new Rectangle((int)(Main.player[num28].position.X + (float)(Main.player[num28].width / 2) - (float)(sWidth / 2) - (float)safeRangeX), (int)(Main.player[num28].position.Y + (float)(Main.player[num28].height / 2) - (float)(sHeight / 2) - (float)safeRangeY), sWidth + safeRangeX * 2, sHeight + safeRangeY * 2);
73308 if (rectangle.Intersects(rectangle2))
73309 {
73310 flag2 = false;
73311 }
73312 }
73313 }
73314 }
73315 if (flag2)
73316 {
73317 if (Main.player[k].ZoneDungeon && (!Main.tileDungeon[Main.tile[num, num2].type] || Main.tile[num, num2 - 1].wall == 0))
73318 {
73319 flag2 = false;
73320 }
73321 if (Main.tile[num, num2 - 1].liquid > 0 && Main.tile[num, num2 - 2].liquid > 0 && !Main.tile[num, num2 - 1].lava())
73322 {
73323 if (Main.tile[num, num2 - 1].shimmer())
73324 {
73325 flag2 = false;
73326 }
73327 if (Main.tile[num, num2 - 1].honey())
73328 {
73329 flag8 = true;
73330 }
73331 else
73332 {
73333 flag7 = true;
73334 }
73335 }
73336 int num29 = (int)Main.player[k].Center.X / 16;
73337 int num30 = (int)(Main.player[k].Bottom.Y + 8f) / 16;
73338 if (Main.tile[num, num2].type == 367)
73339 {
73340 flag10 = true;
73341 }
73342 else if (Main.tile[num, num2].type == 368)
73343 {
73344 flag9 = true;
73345 }
73346 else if (Main.tile[num29, num30].type == 367)
73347 {
73348 flag10 = true;
73349 }
73350 else if (Main.tile[num29, num30].type == 368)
73351 {
73352 flag9 = true;
73353 }
73354 else
73355 {
73356 int num31 = Main.rand.Next(20, 31);
73357 int num32 = Main.rand.Next(1, 4);
73358 if (num - num31 < 0)
73359 {
73360 num31 = num;
73361 }
73362 if (num2 - num31 < 0)
73363 {
73364 num31 = num2;
73365 }
73366 if (num + num31 >= Main.maxTilesX)
73367 {
73368 num31 = Main.maxTilesX - num - 1;
73369 }
73370 if (num2 + num31 >= Main.maxTilesY)
73371 {
73372 num31 = Main.maxTilesY - num2 - 1;
73373 }
73374 for (int num33 = num - num31; num33 <= num + num31; num33 += num32)
73375 {
73376 int num34 = Main.rand.Next(1, 4);
73377 for (int num35 = num2 - num31; num35 <= num2 + num31; num35 += num34)
73378 {
73379 if (Main.tile[num33, num35].type == 367)
73380 {
73381 flag10 = true;
73382 }
73383 if (Main.tile[num33, num35].type == 368)
73384 {
73385 flag9 = true;
73386 }
73387 }
73388 }
73389 num31 = Main.rand.Next(30, 61);
73390 num32 = Main.rand.Next(3, 7);
73391 if (num29 - num31 < 0)
73392 {
73393 num31 = num29;
73394 }
73395 if (num30 - num31 < 0)
73396 {
73397 num31 = num30;
73398 }
73399 if (num29 + num31 >= Main.maxTilesX)
73400 {
73401 num31 = Main.maxTilesX - num29 - 2;
73402 }
73403 if (num30 + num31 >= Main.maxTilesY)
73404 {
73405 num31 = Main.maxTilesY - num30 - 2;
73406 }
73407 for (int num36 = num29 - num31; num36 <= num29 + num31; num36 += num32)
73408 {
73409 int num37 = Main.rand.Next(3, 7);
73410 for (int num38 = num30 - num31; num38 <= num30 + num31; num38 += num37)
73411 {
73412 if (Main.tile[num36, num38].type == 367)
73413 {
73414 flag10 = true;
73415 }
73416 if (Main.tile[num36, num38].type == 368)
73417 {
73418 flag9 = true;
73419 }
73420 }
73421 }
73422 }
73423 if (flag8)
73424 {
73425 flag2 = false;
73426 }
73427 if ((num3 == 477 || num3 == 492) && !Main.bloodMoon && !Main.eclipse && Main.invasionType <= 0 && !Main.pumpkinMoon && !Main.snowMoon && !Main.slimeRain && Main.rand.Next(100) < 10)
73428 {
73429 flag2 = false;
73430 }
73431 }
73432 if (!flag2)
73433 {
73434 continue;
73435 }
73436 if (Main.remixWorld)
73437 {
73438 ResetRemixHax();
73439 }
73440 bool flag17 = (double)num2 <= Main.rockLayer;
73441 if (Main.remixWorld)
73442 {
73443 flag17 = (double)num2 > Main.rockLayer && num2 <= Main.maxTilesY - 190;
73444 }
73445 bool flag18 = (double)num2 > Main.rockLayer && num2 < Main.UnderworldLayer;
73446 if (Main.dontStarveWorld)
73447 {
73448 flag18 = num2 < Main.UnderworldLayer;
73449 }
73450 if (flag18 && !Main.player[k].ZoneDungeon && !flag6)
73451 {
73452 if (Main.rand.Next(3) == 0)
73453 {
73454 int num39 = Main.rand.Next(5, 15);
73455 if (num - num39 >= 0 && num + num39 < Main.maxTilesX)
73456 {
73457 for (int num40 = num - num39; num40 < num + num39; num40++)
73458 {
73459 for (int num41 = num2 - num39; num41 < num2 + num39; num41++)
73460 {
73461 if (Main.tile[num40, num41].wall == 62)
73462 {
73463 flag11 = true;
73464 }
73465 }
73466 }
73467 }
73468 }
73469 else
73470 {
73471 int num42 = (int)Main.player[k].position.X / 16;
73472 int num43 = (int)Main.player[k].position.Y / 16;
73473 if (Main.tile[num42, num43].wall == 62)
73474 {
73475 flag11 = true;
73476 }
73477 }
73478 }
73479 if ((double)num2 < Main.rockLayer && num2 > 200 && !Main.player[k].ZoneDungeon && !flag6)
73480 {
73481 if (Main.rand.Next(3) == 0)
73482 {
73483 int num44 = Main.rand.Next(5, 15);
73484 if (num - num44 >= 0 && num + num44 < Main.maxTilesX)
73485 {
73486 for (int num45 = num - num44; num45 < num + num44; num45++)
73487 {
73488 for (int num46 = num2 - num44; num46 < num2 + num44; num46++)
73489 {
73491 {
73492 flag13 = true;
73493 }
73494 }
73495 }
73496 }
73497 }
73498 else
73499 {
73500 int num47 = (int)Main.player[k].position.X / 16;
73501 int num48 = (int)Main.player[k].position.Y / 16;
73503 {
73504 flag13 = true;
73505 }
73506 }
73507 }
73508 flag2 = false;
73509 int num49 = Main.tile[num, num2].type;
73510 int num50 = Main.tile[num, num2 - 1].wall;
73511 if (Main.tile[num, num2 - 2].wall == 244 || Main.tile[num, num2].wall == 244)
73512 {
73513 num50 = 244;
73514 }
73515 bool flag19 = (float)new Point(num8 - num, num9 - num2).X * Main.windSpeedTarget > 0f;
73516 bool flag20 = (double)num2 <= Main.worldSurface;
73517 bool flag21 = (double)num2 >= Main.rockLayer;
73518 bool flag22 = ((num < WorldGen.oceanDistance || num > Main.maxTilesX - WorldGen.oceanDistance) && Main.tileSand[num49] && (double)num2 < Main.rockLayer) || (num3 == 53 && WorldGen.oceanDepths(num, num2));
73519 bool flag23 = (double)num2 <= Main.worldSurface && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance);
73520 bool flag24 = Main.cloudAlpha > 0f;
73521 int range = 10;
73522 if (Main.remixWorld)
73523 {
73524 flag24 = Main.raining;
73525 flag21 = (((double)num2 > Main.worldSurface && (double)num2 < Main.rockLayer) ? true : false);
73526 if ((double)num2 < Main.worldSurface + 5.0)
73527 {
73528 Main.raining = false;
73529 Main.cloudAlpha = 0f;
73530 Main.dayTime = false;
73531 }
73532 range = 5;
73533 if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
73534 {
73535 flag22 = false;
73536 flag23 = false;
73537 }
73538 if ((double)num < (double)Main.maxTilesX * 0.43 || (double)num > (double)Main.maxTilesX * 0.57)
73539 {
73540 if ((double)num2 > Main.rockLayer - 200.0 && num2 < Main.maxTilesY - 200 && Main.rand.Next(2) == 0)
73541 {
73542 flag22 = true;
73543 }
73544 if ((double)num2 > Main.rockLayer - 200.0 && num2 < Main.maxTilesY - 200 && Main.rand.Next(2) == 0)
73545 {
73546 flag23 = true;
73547 }
73548 }
73549 if ((double)num2 > Main.rockLayer - 20.0)
73550 {
73551 if (num2 <= Main.maxTilesY - 190 && Main.rand.Next(3) != 0)
73552 {
73553 flag20 = true;
73554 Main.dayTime = false;
73555 if (Main.rand.Next(2) == 0)
73556 {
73557 Main.dayTime = true;
73558 }
73559 }
73560 else if ((Main.bloodMoon || (Main.eclipse && Main.dayTime)) && (double)num > (double)Main.maxTilesX * 0.38 + 50.0 && (double)num < (double)Main.maxTilesX * 0.62)
73561 {
73562 flag20 = true;
73563 }
73564 }
73565 }
73567 int newNPC = 200;
73568 int cattailX;
73569 int cattailY;
73570 if (Main.player[k].ZoneTowerNebula)
73571 {
73572 bool flag25 = true;
73573 int num51 = 0;
73574 while (flag25)
73575 {
73576 num51 = Utils.SelectRandom<int>(Main.rand, 424, 424, 424, 423, 423, 423, 421, 421, 421, 420, 420);
73577 flag25 = false;
73578 if (num51 == 424 && CountNPCS(num51) >= 3)
73579 {
73580 flag25 = true;
73581 }
73582 if (num51 == 423 && CountNPCS(num51) >= 3)
73583 {
73584 flag25 = true;
73585 }
73586 if (num51 == 420 && CountNPCS(num51) >= 3)
73587 {
73588 flag25 = true;
73589 }
73590 }
73591 if (num51 != 0)
73592 {
73593 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num51, 1);
73594 }
73595 }
73596 else if (Main.player[k].ZoneTowerVortex)
73597 {
73598 bool flag26 = true;
73599 int num52 = 0;
73600 while (flag26)
73601 {
73602 num52 = Utils.SelectRandom<int>(Main.rand, 429, 429, 429, 429, 427, 427, 425, 425, 426);
73603 flag26 = false;
73604 if (num52 == 425 && CountNPCS(num52) >= 3)
73605 {
73606 flag26 = true;
73607 }
73608 if (num52 == 426 && CountNPCS(num52) >= 3)
73609 {
73610 flag26 = true;
73611 }
73612 if (num52 == 429 && CountNPCS(num52) >= 4)
73613 {
73614 flag26 = true;
73615 }
73616 }
73617 if (num52 != 0)
73618 {
73619 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num52, 1);
73620 }
73621 }
73622 else if (Main.player[k].ZoneTowerStardust)
73623 {
73624 int num53 = Utils.SelectRandom<int>(Main.rand, 411, 411, 411, 409, 409, 407, 402, 405);
73625 if (num53 != 0)
73626 {
73627 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num53, 1);
73628 }
73629 }
73630 else if (Main.player[k].ZoneTowerSolar)
73631 {
73632 bool flag27 = true;
73633 int num54 = 0;
73634 while (flag27)
73635 {
73636 num54 = Utils.SelectRandom<int>(Main.rand, 518, 419, 418, 412, 417, 416, 415);
73637 flag27 = false;
73638 if (num54 == 418 && Main.rand.Next(2) == 0)
73639 {
73640 num54 = Utils.SelectRandom<int>(Main.rand, 415, 416, 419, 417);
73641 }
73642 if (num54 == 518 && CountNPCS(num54) >= 2)
73643 {
73644 flag27 = true;
73645 }
73646 if (num54 == 412 && CountNPCS(num54) >= 1)
73647 {
73648 flag27 = true;
73649 }
73650 }
73651 if (num54 != 0)
73652 {
73653 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num54, 1);
73654 }
73655 }
73656 else if (flag3)
73657 {
73658 int maxValue2 = 8;
73659 int maxValue3 = 30;
73660 bool flag28 = (float)Math.Abs(num - Main.maxTilesX / 2) / (float)(Main.maxTilesX / 2) > 0.33f && (Main.wallLight[Main.tile[num8, num9].wall] || Main.tile[num8, num9].wall == 73);
73661 if (flag28 && AnyDanger())
73662 {
73663 flag28 = false;
73664 }
73665 if (Main.player[k].ZoneWaterCandle)
73666 {
73667 maxValue2 = 3;
73668 maxValue3 = 10;
73669 }
73670 if (flag6 && Main.invasionType == 4)
73671 {
73672 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 388);
73673 }
73674 else if (flag28 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(maxValue2) == 0) || Main.rand.Next(maxValue3) == 0) && !AnyNPCs(399))
73675 {
73676 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 399);
73677 }
73678 else if (flag28 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(maxValue2) == 0) || Main.rand.Next(maxValue3) == 0) && !AnyNPCs(399) && (Main.player[k].inventory[Main.player[k].selectedItem].type == 148 || Main.player[k].ZoneWaterCandle))
73679 {
73680 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 399);
73681 }
73682 else if (Main.hardMode && !AnyNPCs(87) && !flag5 && Main.rand.Next(10) == 0)
73683 {
73684 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 87, 1);
73685 }
73686 else if (Main.hardMode && !AnyNPCs(87) && !flag5 && Main.rand.Next(10) == 0 && (Main.player[k].inventory[Main.player[k].selectedItem].type == 148 || Main.player[k].ZoneWaterCandle))
73687 {
73688 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 87, 1);
73689 }
73690 else if (!unlockedSlimePurpleSpawn && Main.player[k].RollLuck(25) == 0 && !AnyNPCs(686))
73691 {
73692 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 686);
73693 }
73694 else
73695 {
73696 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 48);
73697 }
73698 }
73699 else if (flag6)
73700 {
73701 if (Main.invasionType == 1)
73702 {
73703 if (Main.hardMode && !AnyNPCs(471) && Main.rand.Next(30) == 0)
73704 {
73705 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 471);
73706 }
73707 else if (Main.rand.Next(9) == 0)
73708 {
73709 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 29);
73710 }
73711 else if (Main.rand.Next(5) == 0)
73712 {
73713 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 26);
73714 }
73715 else if (Main.rand.Next(3) == 0)
73716 {
73717 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 111);
73718 }
73719 else if (Main.rand.Next(3) == 0)
73720 {
73721 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 27);
73722 }
73723 else
73724 {
73725 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 28);
73726 }
73727 }
73728 else if (Main.invasionType == 2)
73729 {
73730 if (Main.rand.Next(7) == 0)
73731 {
73732 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 145);
73733 }
73734 else if (Main.rand.Next(3) == 0)
73735 {
73736 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 143);
73737 }
73738 else
73739 {
73740 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 144);
73741 }
73742 }
73743 else if (Main.invasionType == 3)
73744 {
73745 if (Main.invasionSize < Main.invasionSizeStart / 2 && Main.rand.Next(20) == 0 && !AnyNPCs(491) && !Collision.SolidTiles(num - 20, num + 20, num2 - 40, num2 - 10))
73746 {
73747 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, (num2 - 10) * 16, 491);
73748 }
73749 else if (Main.rand.Next(30) == 0 && !AnyNPCs(216))
73750 {
73751 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 216);
73752 }
73753 else if (Main.rand.Next(11) == 0)
73754 {
73755 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 215);
73756 }
73757 else if (Main.rand.Next(9) == 0)
73758 {
73759 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 252);
73760 }
73761 else if (Main.rand.Next(7) == 0)
73762 {
73763 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 214);
73764 }
73765 else if (Main.rand.Next(3) == 0)
73766 {
73767 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 213);
73768 }
73769 else
73770 {
73771 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 212);
73772 }
73773 }
73774 else if (Main.invasionType == 4)
73775 {
73776 int num55 = 0;
73777 int num56 = Main.rand.Next(7);
73778 bool flag29 = (float)(Main.invasionSizeStart - Main.invasionSize) / (float)Main.invasionSizeStart >= 0.3f && !AnyNPCs(395);
73779 if (Main.rand.Next(45) == 0 && flag29)
73780 {
73781 num55 = 395;
73782 }
73783 else if (num56 >= 6)
73784 {
73785 if (Main.rand.Next(20) == 0 && flag29)
73786 {
73787 num55 = 395;
73788 }
73789 else
73790 {
73791 int num57 = Main.rand.Next(2);
73792 if (num57 == 0)
73793 {
73794 num55 = 390;
73795 }
73796 if (num57 == 1)
73797 {
73798 num55 = 386;
73799 }
73800 }
73801 }
73802 else if (num56 >= 4)
73803 {
73804 int num58 = Main.rand.Next(5);
73805 num55 = ((num58 < 2) ? 382 : ((num58 >= 4) ? 388 : 381));
73806 }
73807 else
73808 {
73809 int num59 = Main.rand.Next(4);
73810 if (num59 == 3)
73811 {
73812 if (!AnyNPCs(520))
73813 {
73814 num55 = 520;
73815 }
73816 else
73817 {
73818 num59 = Main.rand.Next(3);
73819 }
73820 }
73821 if (num59 == 0)
73822 {
73823 num55 = 385;
73824 }
73825 if (num59 == 1)
73826 {
73827 num55 = 389;
73828 }
73829 if (num59 == 2)
73830 {
73831 num55 = 383;
73832 }
73833 }
73834 if (num55 != 0)
73835 {
73836 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num55, 1);
73837 }
73838 }
73839 }
73840 else if (num50 == 244 && !Main.remixWorld)
73841 {
73842 if (flag7)
73843 {
73844 if (Main.player[k].RollLuck(goldCritterChance) == 0)
73845 {
73846 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 592);
73847 }
73848 else
73849 {
73850 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 55);
73851 }
73852 }
73853 else if ((double)num2 > Main.worldSurface)
73854 {
73855 if (Main.rand.Next(3) == 0)
73856 {
73857 if (Main.player[k].RollLuck(goldCritterChance) == 0)
73858 {
73859 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 447);
73860 }
73861 else
73862 {
73863 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 300);
73864 }
73865 }
73866 else if (Main.rand.Next(2) == 0)
73867 {
73868 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 359);
73869 }
73870 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
73871 {
73872 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 448);
73873 }
73874 else if (Main.rand.Next(3) != 0)
73875 {
73876 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 357);
73877 }
73878 }
73879 else if (Main.player[k].RollLuck(2) == 0)
73880 {
73881 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 624);
73882 Main.npc[newNPC].timeLeft *= 10;
73883 }
73884 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
73885 {
73886 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 443);
73887 }
73888 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
73889 {
73890 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 539);
73891 }
73892 else if (Main.halloween && Main.rand.Next(3) != 0)
73893 {
73894 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 303);
73895 }
73896 else if (Main.xMas && Main.rand.Next(3) != 0)
73897 {
73898 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 337);
73899 }
73900 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
73901 {
73902 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 540);
73903 }
73904 else if (Main.rand.Next(3) == 0)
73905 {
73906 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
73907 }
73908 else
73909 {
73910 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 46);
73911 }
73912 }
73913 else if (!savedBartender && DD2Event.ReadyToFindBartender && !AnyNPCs(579) && Main.rand.Next(80) == 0 && !flag7)
73914 {
73915 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 579);
73916 }
73917 else if (Main.tile[num, num2].wall == 62 || flag11)
73918 {
73919 bool flag30 = flag21 && num2 < Main.maxTilesY - 210;
73920 if (Main.dontStarveWorld)
73921 {
73922 flag30 = num2 < Main.maxTilesY - 210;
73923 }
73924 if (Main.tile[num, num2].wall == 62 && Main.rand.Next(8) == 0 && !flag7 && flag30 && !savedStylist && !AnyNPCs(354))
73925 {
73926 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 354);
73927 }
73928 else if (Main.hardMode && Main.rand.Next(10) != 0)
73929 {
73930 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 163);
73931 }
73932 else
73933 {
73934 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 164);
73935 }
73936 }
73938 {
73939 float num60 = 1.15f;
73940 if ((double)num2 > (Main.rockLayer * 2.0 + (double)Main.maxTilesY) / 3.0)
73941 {
73942 num60 *= 0.5f;
73943 }
73944 else if ((double)num2 > Main.rockLayer)
73945 {
73946 num60 *= 0.85f;
73947 }
73948 if (Main.rand.Next(20) == 0 && !flag7 && !savedGolfer && !AnyNPCs(589))
73949 {
73950 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 589);
73951 }
73952 else if (Main.hardMode && Main.rand.Next((int)(45f * num60)) == 0 && !flag5 && (double)num2 > Main.worldSurface + 100.0)
73953 {
73954 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 510);
73955 }
73956 else if (Main.rand.Next((int)(45f * num60)) == 0 && !flag5 && (double)num2 > Main.worldSurface + 100.0 && CountNPCS(513) == 0)
73957 {
73958 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 513);
73959 }
73960 else if (Main.hardMode && Main.rand.Next(5) != 0)
73961 {
73962 List<int> list = new List<int>();
73963 if (Main.player[k].ZoneCorrupt)
73964 {
73965 list.Add(525);
73966 list.Add(525);
73967 }
73968 if (Main.player[k].ZoneCrimson)
73969 {
73970 list.Add(526);
73971 list.Add(526);
73972 }
73973 if (Main.player[k].ZoneHallow)
73974 {
73975 list.Add(527);
73976 list.Add(527);
73977 }
73978 if (list.Count == 0)
73979 {
73980 list.Add(524);
73981 list.Add(524);
73982 }
73983 if (Main.player[k].ZoneCorrupt || Main.player[k].ZoneCrimson)
73984 {
73985 list.Add(533);
73986 list.Add(529);
73987 }
73988 else
73989 {
73990 list.Add(530);
73991 list.Add(528);
73992 }
73993 list.Add(532);
73994 int num61 = Utils.SelectRandom(Main.rand, list.ToArray());
73995 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num61);
73996 list.Clear();
73997 }
73998 else
73999 {
74000 int num62 = Utils.SelectRandom<int>(Main.rand, 69, 580, 580, 580, 581);
74001 if (Main.rand.Next(15) == 0)
74002 {
74003 num62 = 537;
74004 }
74005 else if (Main.rand.Next(10) == 0)
74006 {
74007 switch (num62)
74008 {
74009 case 580:
74010 num62 = 508;
74011 break;
74012 case 581:
74013 num62 = 509;
74014 break;
74015 }
74016 }
74017 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num62);
74018 }
74019 }
74020 else if (Main.hardMode && flag7 && Main.player[k].ZoneJungle && Main.rand.Next(3) != 0)
74021 {
74022 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 157);
74023 }
74024 else if (Main.hardMode && flag7 && Main.player[k].ZoneCrimson && Main.rand.Next(3) != 0)
74025 {
74026 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 242);
74027 }
74028 else if (Main.hardMode && flag7 && Main.player[k].ZoneCrimson && Main.rand.Next(3) != 0)
74029 {
74030 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 241);
74031 }
74032 else if ((!flag12 || (!savedAngler && !AnyNPCs(376))) && flag7 && flag22)
74033 {
74034 bool flag31 = false;
74035 if (!savedAngler && !AnyNPCs(376) && ((double)num2 < Main.worldSurface - 10.0 || Main.remixWorld))
74036 {
74037 int num63 = -1;
74038 for (int num64 = num2 - 1; num64 > num2 - 50; num64--)
74039 {
74040 if (Main.tile[num, num64].liquid == 0 && !WorldGen.SolidTile(num, num64) && !WorldGen.SolidTile(num, num64 + 1) && !WorldGen.SolidTile(num, num64 + 2))
74041 {
74042 num63 = num64 + 2;
74043 break;
74044 }
74045 }
74046 if (num63 > num2)
74047 {
74048 num63 = num2;
74049 }
74050 if (num63 > 0 && !flag15)
74051 {
74052 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num63 * 16, 376);
74053 flag31 = true;
74054 }
74055 }
74056 if (!flag31 && !flag15)
74057 {
74058 int num65 = -1;
74059 int num66 = -1;
74060 if (((double)num2 < Main.worldSurface || Main.remixWorld) && num2 > 50)
74061 {
74062 for (int num67 = num2 - 1; num67 > num2 - 50; num67--)
74063 {
74064 if (Main.tile[num, num67].liquid == 0 && !WorldGen.SolidTile(num, num67) && !WorldGen.SolidTile(num, num67 + 1) && !WorldGen.SolidTile(num, num67 + 2))
74065 {
74066 num65 = num67 + 2;
74067 if (!WorldGen.SolidTile(num, num65 + 1) && !WorldGen.SolidTile(num, num65 + 2) && !Main.wallHouse[Main.tile[num, num65 + 2].wall])
74068 {
74069 num66 = num65 + 2;
74070 }
74071 if (Main.wallHouse[Main.tile[num, num65].wall])
74072 {
74073 num65 = -1;
74074 }
74075 break;
74076 }
74077 }
74078 if (num65 > num2)
74079 {
74080 num65 = num2;
74081 }
74082 if (num66 > num2)
74083 {
74084 num66 = num2;
74085 }
74086 }
74087 if (num65 > 0 && !flag15 && Main.rand.Next(10) == 0)
74088 {
74089 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num65 * 16, 602);
74090 }
74091 else if (Main.rand.Next(10) == 0)
74092 {
74093 int num68 = Main.rand.Next(3);
74094 if (num68 == 0 && num65 > 0)
74095 {
74096 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num65 * 16, 625);
74097 }
74098 else if (num68 == 1 && num66 > 0)
74099 {
74100 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num66 * 16, 615);
74101 }
74102 else if (num68 == 2)
74103 {
74104 int num69 = num2;
74105 if (num66 > 0)
74106 {
74107 num69 = num66;
74108 }
74109 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74110 {
74111 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num69 * 16, 627);
74112 }
74113 else
74114 {
74115 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num69 * 16, 626);
74116 }
74117 }
74118 }
74119 else if (Main.rand.Next(40) == 0)
74120 {
74121 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 220);
74122 }
74123 else if (Main.rand.Next(18) == 0)
74124 {
74125 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 221);
74126 }
74127 else if (Main.rand.Next(8) == 0)
74128 {
74129 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 65);
74130 }
74131 else if (Main.rand.Next(3) == 0)
74132 {
74133 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 67);
74134 }
74135 else
74136 {
74137 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 64);
74138 }
74139 }
74140 }
74141 else if (!flag7 && !savedAngler && !AnyNPCs(376) && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance) && Main.tileSand[num49] && ((double)num2 < Main.worldSurface || Main.remixWorld))
74142 {
74143 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 376);
74144 }
74145 else if (!flag12 && flag7 && ((flag21 && Main.rand.Next(2) == 0) || num49 == 60))
74146 {
74147 bool flag32 = false;
74148 if (num49 == 60 && flag20 && num2 > 50 && Main.rand.Next(3) == 0 && Main.dayTime)
74149 {
74150 int num70 = -1;
74151 for (int num71 = num2 - 1; num71 > num2 - 50; num71--)
74152 {
74153 if (Main.tile[num, num71].liquid == 0 && !WorldGen.SolidTile(num, num71) && !WorldGen.SolidTile(num, num71 + 1) && !WorldGen.SolidTile(num, num71 + 2))
74154 {
74155 num70 = num71 + 2;
74156 break;
74157 }
74158 }
74159 if (num70 > num2)
74160 {
74161 num70 = num2;
74162 }
74163 if (num70 > 0 && !flag15)
74164 {
74165 flag32 = true;
74166 if (Main.rand.Next(4) == 0)
74167 {
74168 flag32 = true;
74169 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num70 * 16, 617);
74170 }
74171 else if (!flag && Main.cloudAlpha == 0f)
74172 {
74173 flag32 = true;
74174 int num72 = Main.rand.Next(1, 4);
74175 for (int num73 = 0; num73 < num72; num73++)
74176 {
74177 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74178 {
74179 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num70 * 16 - 16, 613);
74180 }
74181 else
74182 {
74183 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num70 * 16 - 16, 612);
74184 }
74185 }
74186 }
74187 }
74188 }
74189 if (!flag32)
74190 {
74191 if (Main.hardMode && Main.rand.Next(3) > 0)
74192 {
74193 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 102);
74194 }
74195 else
74196 {
74197 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 58);
74198 }
74199 }
74200 }
74201 else if (!flag12 && flag7 && (double)num2 > Main.worldSurface && Main.rand.Next(3) == 0)
74202 {
74203 if (Main.hardMode && Main.rand.Next(3) > 0)
74204 {
74205 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 103);
74206 }
74207 else
74208 {
74209 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 63);
74210 }
74211 }
74212 else if (flag7 && Main.rand.Next(4) == 0 && ((num > WorldGen.oceanDistance && num < Main.maxTilesX - WorldGen.oceanDistance) || (double)num2 > Main.worldSurface + 50.0))
74213 {
74214 if (Main.player[k].ZoneCorrupt)
74215 {
74216 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 57);
74217 }
74218 else if (Main.player[k].ZoneCrimson)
74219 {
74220 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 465);
74221 }
74222 else if ((double)num2 < Main.worldSurface && num2 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
74223 {
74224 int num74 = -1;
74225 for (int num75 = num2 - 1; num75 > num2 - 50; num75--)
74226 {
74227 if (Main.tile[num, num75].liquid == 0 && !WorldGen.SolidTile(num, num75) && !WorldGen.SolidTile(num, num75 + 1) && !WorldGen.SolidTile(num, num75 + 2))
74228 {
74229 num74 = num75 + 2;
74230 break;
74231 }
74232 }
74233 if (num74 > num2)
74234 {
74235 num74 = num2;
74236 }
74237 if (num74 > 0 && !flag15)
74238 {
74239 if (Main.rand.Next(5) == 0 && (num3 == 2 || num3 == 477))
74240 {
74241 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 616);
74242 }
74243 else if (num3 == 53)
74244 {
74245 if (Main.rand.Next(2) == 0 && !flag && Main.cloudAlpha == 0f)
74246 {
74247 int num76 = Main.rand.Next(1, 4);
74248 for (int num77 = 0; num77 < num76; num77++)
74249 {
74250 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74251 {
74252 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num74 * 16 - 16, 613);
74253 }
74254 else
74255 {
74256 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num74 * 16 - 16, 612);
74257 }
74258 }
74259 }
74260 else
74261 {
74262 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 608);
74263 }
74264 }
74265 else if (Main.rand.Next(2) == 0)
74266 {
74267 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 362);
74268 }
74269 else
74270 {
74271 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 364);
74272 }
74273 }
74274 else if (num3 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
74275 {
74276 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num74 * 16, 607);
74277 }
74278 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74279 {
74280 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 592);
74281 }
74282 else
74283 {
74284 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 55);
74285 }
74286 }
74287 else if (num3 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
74288 {
74289 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 607);
74290 }
74291 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74292 {
74293 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 592);
74294 }
74295 else
74296 {
74297 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 55);
74298 }
74299 }
74300 else if (downedGoblins && Main.player[k].RollLuck(20) == 0 && !flag7 && flag21 && num2 < Main.maxTilesY - 210 && !savedGoblin && !AnyNPCs(105))
74301 {
74302 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 105);
74303 }
74304 else if (Main.hardMode && Main.player[k].RollLuck(20) == 0 && !flag7 && flag21 && num2 < Main.maxTilesY - 210 && !savedWizard && !AnyNPCs(106))
74305 {
74306 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 106);
74307 }
74308 else if (downedBoss3 && Main.player[k].RollLuck(20) == 0 && !flag7 && flag21 && num2 < Main.maxTilesY - 210 && !unlockedSlimeOldSpawn && !AnyNPCs(685))
74309 {
74310 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 685);
74311 }
74312 else if (flag12)
74313 {
74314 if (Main.player[k].ZoneGraveyard)
74315 {
74316 if (!flag7)
74317 {
74318 if (Main.rand.Next(2) == 0)
74319 {
74320 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 606);
74321 }
74322 else
74323 {
74324 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 610);
74325 }
74326 }
74327 }
74328 else if (!flag15 && flag23)
74329 {
74330 if (flag7)
74331 {
74332 int num78 = -1;
74333 int num79 = -1;
74334 if (((double)num2 < Main.worldSurface || Main.remixWorld) && num2 > 50)
74335 {
74336 for (int num80 = num2 - 1; num80 > num2 - 50; num80--)
74337 {
74338 if (Main.tile[num, num80].liquid == 0 && !WorldGen.SolidTile(num, num80) && !WorldGen.SolidTile(num, num80 + 1) && !WorldGen.SolidTile(num, num80 + 2))
74339 {
74340 num78 = num80 + 2;
74341 if (!WorldGen.SolidTile(num, num78 + 1) && !WorldGen.SolidTile(num, num78 + 2))
74342 {
74343 num79 = num78 + 2;
74344 }
74345 break;
74346 }
74347 }
74348 if (num78 > num2)
74349 {
74350 num78 = num2;
74351 }
74352 if (num79 > num2)
74353 {
74354 num79 = num2;
74355 }
74356 }
74357 if (Main.rand.Next(2) == 0)
74358 {
74359 int num81 = Main.rand.Next(3);
74360 if (num81 == 0 && num78 > 0)
74361 {
74362 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num78 * 16, 625);
74363 }
74364 else if (num81 == 1 && num79 > 0)
74365 {
74366 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num79 * 16, 615);
74367 }
74368 else if (num81 == 2)
74369 {
74370 int num82 = num2;
74371 if (num79 > 0)
74372 {
74373 num82 = num79;
74374 }
74375 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74376 {
74377 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num82 * 16, 627);
74378 }
74379 else
74380 {
74381 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num82 * 16, 626);
74382 }
74383 }
74384 }
74385 else if (num78 > 0 && !flag15)
74386 {
74387 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num78 * 16, 602);
74388 }
74389 }
74390 else
74391 {
74392 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 602);
74393 }
74394 }
74395 else if ((num49 == 2 || num49 == 477 || num49 == 53) && !tooWindyForButterflies && Main.raining && Main.dayTime && Main.rand.Next(2) == 0 && ((double)num2 <= Main.worldSurface || Main.remixWorld) && FindCattailTop(num, num2, out cattailX, out cattailY))
74396 {
74397 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74398 {
74399 NewNPC(GetSpawnSourceForNaturalSpawn(), cattailX * 16 + 8, cattailY * 16, 601);
74400 }
74401 else
74402 {
74404 }
74405 if (Main.rand.Next(3) == 0)
74406 {
74408 }
74409 if (Main.rand.Next(3) == 0)
74410 {
74412 }
74413 }
74414 else if (flag7)
74415 {
74416 if (flag20 && num2 > 50 && Main.rand.Next(3) != 0 && Main.dayTime)
74417 {
74418 int num83 = -1;
74419 for (int num84 = num2 - 1; num84 > num2 - 50; num84--)
74420 {
74421 if (Main.tile[num, num84].liquid == 0 && !WorldGen.SolidTile(num, num84) && !WorldGen.SolidTile(num, num84 + 1) && !WorldGen.SolidTile(num, num84 + 2))
74422 {
74423 num83 = num84 + 2;
74424 break;
74425 }
74426 }
74427 if (num83 > num2)
74428 {
74429 num83 = num2;
74430 }
74431 if (num83 > 0 && !flag15)
74432 {
74433 switch (num3)
74434 {
74435 case 60:
74436 if (Main.rand.Next(3) != 0 && !flag && Main.cloudAlpha == 0f)
74437 {
74438 int num87 = Main.rand.Next(1, 4);
74439 for (int num88 = 0; num88 < num87; num88++)
74440 {
74441 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74442 {
74443 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 613);
74444 }
74445 else
74446 {
74447 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 612);
74448 }
74449 }
74450 }
74451 else
74452 {
74453 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 617);
74454 }
74455 break;
74456 case 53:
74457 if (Main.rand.Next(3) != 0 && !flag && Main.cloudAlpha == 0f)
74458 {
74459 int num85 = Main.rand.Next(1, 4);
74460 for (int num86 = 0; num86 < num85; num86++)
74461 {
74462 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74463 {
74464 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 613);
74465 }
74466 else
74467 {
74468 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + Main.rand.Next(-16, 17), num83 * 16 - 16, 612);
74469 }
74470 }
74471 }
74472 else
74473 {
74474 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 608);
74475 }
74476 break;
74477 default:
74478 if (Main.rand.Next(5) == 0 && (num3 == 2 || num3 == 477))
74479 {
74480 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 616);
74481 }
74482 else if (Main.rand.Next(2) == 0)
74483 {
74484 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 362);
74485 }
74486 else
74487 {
74488 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num83 * 16, 364);
74489 }
74490 break;
74491 }
74492 }
74493 else if (num3 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
74494 {
74495 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 607);
74496 }
74497 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74498 {
74499 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 592);
74500 }
74501 else
74502 {
74503 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 55);
74504 }
74505 }
74506 else if (num3 == 53 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance)
74507 {
74508 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 607);
74509 }
74510 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74511 {
74512 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 592);
74513 }
74514 else
74515 {
74516 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 55);
74517 }
74518 }
74519 else if (num49 == 147 || num49 == 161)
74520 {
74521 if (Main.rand.Next(2) == 0)
74522 {
74523 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 148);
74524 }
74525 else
74526 {
74527 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 149);
74528 }
74529 }
74530 else if (num49 == 60)
74531 {
74532 if (Main.dayTime && Main.rand.Next(3) != 0)
74533 {
74534 switch (Main.rand.Next(5))
74535 {
74536 case 0:
74537 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 671);
74538 break;
74539 case 1:
74540 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 672);
74541 break;
74542 case 2:
74543 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 673);
74544 break;
74545 case 3:
74546 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 674);
74547 break;
74548 default:
74549 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 675);
74550 break;
74551 }
74552 }
74553 else
74554 {
74555 SpawnNPC_SpawnFrog(num, num2, k);
74556 }
74557 }
74558 else if (num49 == 53)
74559 {
74560 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(366, 368));
74561 }
74562 else
74563 {
74564 if (num49 != 2 && num49 != 477 && num49 != 109 && num49 != 492 && !((double)num2 > Main.worldSurface))
74565 {
74566 break;
74567 }
74568 bool flag33 = flag20;
74569 if (Main.raining && num2 <= Main.UnderworldLayer)
74570 {
74571 if (flag21 && Main.rand.Next(5) == 0)
74572 {
74574 }
74575 else if (flag21 && Main.rand.Next(5) == 0)
74576 {
74578 }
74579 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74580 {
74581 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 448);
74582 }
74583 else if (Main.rand.Next(3) != 0)
74584 {
74585 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 357);
74586 }
74587 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74588 {
74589 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 593);
74590 }
74591 else
74592 {
74593 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 230);
74594 }
74595 }
74596 else if (!Main.dayTime && Main.numClouds <= 55 && Main.cloudBGActive == 0f && Star.starfallBoost > 3f && flag33 && Main.player[k].RollLuck(2) == 0)
74597 {
74598 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 484);
74599 }
74600 else if (!tooWindyForButterflies && !Main.dayTime && Main.rand.Next(fireFlyFriendly) == 0 && flag33)
74601 {
74602 int num89 = 355;
74603 if (num49 == 109)
74604 {
74605 num89 = 358;
74606 }
74607 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num89);
74608 if (Main.rand.Next(fireFlyMultiple) == 0)
74609 {
74610 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, num89);
74611 }
74612 if (Main.rand.Next(fireFlyMultiple) == 0)
74613 {
74614 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, num89);
74615 }
74616 if (Main.rand.Next(fireFlyMultiple) == 0)
74617 {
74618 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16 - 16, num89);
74619 }
74620 if (Main.rand.Next(fireFlyMultiple) == 0)
74621 {
74622 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16 + 16, num89);
74623 }
74624 }
74625 else if (Main.cloudAlpha == 0f && !Main.dayTime && Main.rand.Next(5) == 0 && flag33)
74626 {
74627 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 611);
74628 }
74629 else if (Main.dayTime && Main.time < 18000.0 && Main.rand.Next(3) != 0 && flag33)
74630 {
74631 int num90 = Main.rand.Next(4);
74632 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74633 {
74634 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 442);
74635 }
74636 else
74637 {
74638 switch (num90)
74639 {
74640 case 0:
74641 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 297);
74642 break;
74643 case 1:
74644 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 298);
74645 break;
74646 default:
74647 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 74);
74648 break;
74649 }
74650 }
74651 }
74652 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(stinkBugChance) == 0 && flag33)
74653 {
74654 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 669);
74655 if (Main.rand.Next(4) == 0)
74656 {
74657 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, 669);
74658 }
74659 if (Main.rand.Next(4) == 0)
74660 {
74661 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, 669);
74662 }
74663 }
74664 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance) == 0 && flag33)
74665 {
74666 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74667 {
74668 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 444);
74669 }
74670 else
74671 {
74672 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 356);
74673 }
74674 if (Main.rand.Next(4) == 0)
74675 {
74676 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, 356);
74677 }
74678 if (Main.rand.Next(4) == 0)
74679 {
74680 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, 356);
74681 }
74682 }
74683 else if (tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance / 2) == 0 && flag33)
74684 {
74685 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74686 {
74687 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 605);
74688 }
74689 else
74690 {
74691 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
74692 }
74693 if (Main.rand.Next(3) != 0)
74694 {
74695 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
74696 }
74697 if (Main.rand.Next(2) == 0)
74698 {
74699 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
74700 }
74701 if (Main.rand.Next(3) == 0)
74702 {
74703 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
74704 }
74705 if (Main.rand.Next(4) == 0)
74706 {
74707 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
74708 }
74709 }
74710 else if (Main.rand.Next(2) == 0 && flag33)
74711 {
74712 int num91 = Main.rand.Next(4);
74713 if (Main.player[k].RollLuck(goldCritterChance) == 0)
74714 {
74715 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 442);
74716 }
74717 else
74718 {
74719 switch (num91)
74720 {
74721 case 0:
74722 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 297);
74723 break;
74724 case 1:
74725 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 298);
74726 break;
74727 default:
74728 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 74);
74729 break;
74730 }
74731 }
74732 }
74733 else if (num2 > Main.UnderworldLayer)
74734 {
74735 if (Main.remixWorld && (double)(Main.player[k].Center.X / 16f) > (double)Main.maxTilesX * 0.39 + 50.0 && (double)(Main.player[k].Center.X / 16f) < (double)Main.maxTilesX * 0.61 && Main.rand.Next(2) == 0)
74736 {
74737 if (Main.rand.Next(2) == 0)
74738 {
74740 }
74741 else
74742 {
74744 }
74745 }
74746 else
74747 {
74749 }
74750 }
74751 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
74752 {
74753 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 443);
74754 }
74755 else if (Main.player[k].RollLuck(goldCritterChance) == 0 && flag33)
74756 {
74757 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 539);
74758 }
74759 else if (Main.halloween && Main.rand.Next(3) != 0)
74760 {
74761 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 303);
74762 }
74763 else if (Main.xMas && Main.rand.Next(3) != 0)
74764 {
74765 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 337);
74766 }
74767 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
74768 {
74769 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 540);
74770 }
74771 else if (Main.rand.Next(3) == 0)
74772 {
74773 if (Main.remixWorld)
74774 {
74775 if ((double)num2 < Main.rockLayer && (double)num2 > Main.worldSurface)
74776 {
74777 if (Main.rand.Next(5) == 0)
74778 {
74780 }
74781 }
74782 else if (flag33)
74783 {
74784 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
74785 }
74786 }
74787 else if ((double)num2 >= Main.rockLayer && num2 <= Main.UnderworldLayer)
74788 {
74789 if (Main.rand.Next(5) == 0)
74790 {
74792 }
74793 }
74794 else if (flag33)
74795 {
74796 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
74797 }
74798 }
74799 else if (Main.remixWorld)
74800 {
74801 if ((double)num2 < Main.rockLayer && (double)num2 > Main.worldSurface)
74802 {
74803 if ((double)num2 >= Main.rockLayer && num2 <= Main.UnderworldLayer)
74804 {
74805 if (Main.rand.Next(5) == 0)
74806 {
74808 }
74809 }
74810 else
74811 {
74812 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 46);
74813 }
74814 }
74815 }
74816 else if ((double)num2 >= Main.rockLayer && num2 <= Main.UnderworldLayer)
74817 {
74818 if (Main.rand.Next(5) == 0)
74819 {
74821 }
74822 }
74823 else
74824 {
74825 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 46);
74826 }
74827 }
74828 }
74829 else if (Main.player[k].ZoneDungeon)
74830 {
74831 int num92 = 0;
74832 ushort wall = Main.tile[num, num2].wall;
74833 ushort wall2 = Main.tile[num, num2 - 1].wall;
74834 if (wall == 94 || wall == 96 || wall == 98 || wall2 == 94 || wall2 == 96 || wall2 == 98)
74835 {
74836 num92 = 1;
74837 }
74838 if (wall == 95 || wall == 97 || wall == 99 || wall2 == 95 || wall2 == 97 || wall2 == 99)
74839 {
74840 num92 = 2;
74841 }
74842 if (Main.player[k].RollLuck(7) == 0)
74843 {
74844 num92 = Main.rand.Next(3);
74845 }
74846 bool flag34 = !downedBoss3;
74847 if (Main.drunkWorld && Main.player[k].position.Y / 16f < (float)(Main.dungeonY + 40))
74848 {
74849 flag34 = false;
74850 }
74851 if (flag34)
74852 {
74853 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 68);
74854 }
74855 else if (downedBoss3 && !savedMech && Main.rand.Next(5) == 0 && !flag7 && !AnyNPCs(123) && (double)num2 > (Main.worldSurface * 4.0 + Main.rockLayer) / 5.0)
74856 {
74857 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 123);
74858 }
74859 else if (flag14 && Main.rand.Next(30) == 0)
74860 {
74861 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 287);
74862 }
74863 else if (flag14 && num92 == 0 && Main.rand.Next(15) == 0)
74864 {
74865 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 293);
74866 }
74867 else if (flag14 && num92 == 1 && Main.rand.Next(15) == 0)
74868 {
74869 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 291);
74870 }
74871 else if (flag14 && num92 == 2 && Main.rand.Next(15) == 0)
74872 {
74873 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 292);
74874 }
74875 else if (flag14 && !AnyNPCs(290) && num92 == 0 && Main.rand.Next(35) == 0)
74876 {
74877 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 290);
74878 }
74879 else if (flag14 && (num92 == 1 || num92 == 2) && Main.rand.Next(30) == 0)
74880 {
74881 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 289);
74882 }
74883 else if (flag14 && Main.rand.Next(20) == 0)
74884 {
74885 int num93 = 281;
74886 if (num92 == 0)
74887 {
74888 num93 += 2;
74889 }
74890 if (num92 == 2)
74891 {
74892 num93 += 4;
74893 }
74894 num93 += Main.rand.Next(2);
74895 if (!AnyNPCs(num93))
74896 {
74897 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num93);
74898 }
74899 }
74900 else if (flag14 && Main.rand.Next(3) != 0)
74901 {
74902 int num94 = 269;
74903 if (num92 == 0)
74904 {
74905 num94 += 4;
74906 }
74907 if (num92 == 2)
74908 {
74909 num94 += 8;
74910 }
74911 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num94 + Main.rand.Next(4));
74912 }
74913 else if (Main.player[k].RollLuck(35) == 0)
74914 {
74915 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 71);
74916 }
74917 else if (num92 == 1 && Main.rand.Next(3) == 0 && !NearSpikeBall(num, num2))
74918 {
74919 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 70);
74920 }
74921 else if (num92 == 2 && Main.rand.Next(5) == 0)
74922 {
74923 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 72);
74924 }
74925 else if (num92 == 0 && Main.rand.Next(7) == 0)
74926 {
74927 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 34);
74928 }
74929 else if (Main.rand.Next(7) == 0)
74930 {
74931 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 32);
74932 }
74933 else
74934 {
74935 switch (Main.rand.Next(5))
74936 {
74937 case 0:
74938 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 294);
74939 break;
74940 case 1:
74941 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 295);
74942 break;
74943 case 2:
74944 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 296);
74945 break;
74946 default:
74947 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 31);
74948 if (Main.rand.Next(4) == 0)
74949 {
74950 Main.npc[newNPC].SetDefaults(-14);
74951 }
74952 else if (Main.rand.Next(5) == 0)
74953 {
74954 Main.npc[newNPC].SetDefaults(-13);
74955 }
74956 break;
74957 }
74958 }
74959 }
74960 else if (Main.player[k].ZoneMeteor)
74961 {
74962 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 23);
74963 }
74964 else if (DD2Event.Ongoing && Main.player[k].ZoneOldOneArmy)
74965 {
74967 }
74968 else if ((Main.remixWorld || (double)num2 <= Main.worldSurface) && !Main.dayTime && Main.snowMoon)
74969 {
74970 int num95 = waveNumber;
74971 if (Main.rand.Next(30) == 0 && CountNPCS(341) < 4)
74972 {
74973 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 341);
74974 }
74975 else if (num95 >= 20)
74976 {
74977 int num96 = Main.rand.Next(3);
74978 if (!(num5 >= (float)num4 * num6))
74979 {
74980 newNPC = num96 switch
74981 {
74982 0 => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345),
74983 1 => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346),
74984 _ => NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344),
74985 };
74986 }
74987 }
74988 else if (num95 >= 19)
74989 {
74990 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 5) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) != 0 || CountNPCS(344) >= 7) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344))));
74991 }
74992 else if (num95 >= 18)
74993 {
74994 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 6) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 351))))));
74995 }
74996 else if (num95 >= 17)
74997 {
74998 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 5) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 351))))));
74999 }
75000 else if (num95 >= 16)
75001 {
75002 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(345) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 4) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 352)))));
75003 }
75004 else if (num95 >= 15)
75005 {
75006 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && CountNPCS(346) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347)))));
75007 }
75008 else
75009 {
75010 switch (num95)
75011 {
75012 case 14:
75013 if (Main.rand.Next(10) == 0 && !AnyNPCs(345))
75014 {
75015 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345);
75016 }
75017 else if (Main.rand.Next(10) == 0 && !AnyNPCs(346))
75018 {
75019 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346);
75020 }
75021 else if (Main.rand.Next(10) == 0 && !AnyNPCs(344))
75022 {
75023 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344);
75024 }
75025 else if (Main.rand.Next(3) == 0)
75026 {
75027 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343);
75028 }
75029 break;
75030 case 13:
75031 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(3) != 0) ? ((Main.rand.Next(6) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 352))));
75032 break;
75033 case 12:
75034 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(8) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 343))));
75035 break;
75036 case 11:
75037 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(345)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 345) : ((Main.rand.Next(6) != 0) ? ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 352)));
75038 break;
75039 case 10:
75040 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && CountNPCS(344) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(6) != 0) ? ((Main.rand.Next(3) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 351))));
75041 break;
75042 case 9:
75043 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(2) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348))));
75044 break;
75045 case 8:
75046 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(8) != 0) ? ((Main.rand.Next(3) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 351)));
75047 break;
75048 case 7:
75049 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(346)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 346) : ((Main.rand.Next(3) != 0) ? ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)));
75050 break;
75051 case 6:
75052 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(344) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(4) != 0) ? ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 347)));
75053 break;
75054 case 5:
75055 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(4) != 0) ? ((Main.rand.Next(8) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350)));
75056 break;
75057 case 4:
75058 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(344)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 344) : ((Main.rand.Next(4) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350)));
75059 break;
75060 case 3:
75061 newNPC = ((Main.rand.Next(8) != 0) ? ((Main.rand.Next(4) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 348));
75062 break;
75063 case 2:
75064 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 350));
75065 break;
75066 default:
75067 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(338, 341)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 342));
75068 break;
75069 }
75070 }
75071 }
75072 else if ((Main.remixWorld || (double)num2 <= Main.worldSurface) && !Main.dayTime && Main.pumpkinMoon)
75073 {
75074 int num97 = waveNumber;
75075 if (waveNumber >= 20)
75076 {
75077 if (!(num5 >= (float)num4 * num6))
75078 {
75079 if (Main.rand.Next(2) == 0 && CountNPCS(327) < 2)
75080 {
75081 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75082 }
75083 else if (Main.rand.Next(3) != 0 && CountNPCS(325) < 2)
75084 {
75085 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325);
75086 }
75087 else if (CountNPCS(315) < 3)
75088 {
75089 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315);
75090 }
75091 }
75092 }
75093 else
75094 {
75095 switch (num97)
75096 {
75097 case 19:
75098 if (Main.rand.Next(5) == 0 && CountNPCS(327) < 2)
75099 {
75100 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75101 }
75102 else if (Main.rand.Next(5) == 0 && CountNPCS(325) < 2)
75103 {
75104 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325);
75105 }
75106 else if (!(num5 >= (float)num4 * num6) && CountNPCS(315) < 5)
75107 {
75108 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315);
75109 }
75110 break;
75111 case 18:
75112 if (Main.rand.Next(7) == 0 && CountNPCS(327) < 2)
75113 {
75114 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75115 }
75116 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(7) != 0 || CountNPCS(315) >= 3) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315)));
75117 break;
75118 case 17:
75119 if (Main.rand.Next(7) == 0 && CountNPCS(327) < 2)
75120 {
75121 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75122 }
75123 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(7) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330))));
75124 break;
75125 case 16:
75126 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(327) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327) : ((Main.rand.Next(10) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315) : ((Main.rand.Next(6) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330))));
75127 break;
75128 case 15:
75129 if (Main.rand.Next(10) == 0 && !AnyNPCs(327))
75130 {
75131 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75132 }
75133 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(5) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330)));
75134 break;
75135 case 14:
75136 if (Main.rand.Next(10) == 0 && !AnyNPCs(327))
75137 {
75138 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327);
75139 }
75140 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(10) == 0 && !AnyNPCs(315)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315) : ((Main.rand.Next(10) != 0) ? ((Main.rand.Next(7) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330))));
75141 break;
75142 case 13:
75143 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(10) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315) : ((Main.rand.Next(6) != 0) ? ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330))));
75144 break;
75145 case 12:
75146 newNPC = ((Main.rand.Next(5) != 0 || AnyNPCs(327)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327));
75147 break;
75148 case 11:
75149 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330)));
75150 break;
75151 case 10:
75152 newNPC = ((Main.rand.Next(10) == 0 && !AnyNPCs(327)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 327) : ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329)));
75153 break;
75154 case 9:
75155 newNPC = ((Main.rand.Next(10) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(8) != 0) ? ((Main.rand.Next(5) != 0) ? ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330)));
75156 break;
75157 case 8:
75158 newNPC = ((Main.rand.Next(8) == 0 && CountNPCS(315) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315) : ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330)));
75159 break;
75160 case 7:
75161 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(4) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330)));
75162 break;
75163 case 6:
75164 newNPC = ((Main.rand.Next(7) == 0 && CountNPCS(325) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 325) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326)));
75165 break;
75166 case 5:
75167 newNPC = ((Main.rand.Next(10) != 0 || AnyNPCs(315)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 315));
75168 break;
75169 case 4:
75170 newNPC = ((Main.rand.Next(8) == 0 && !AnyNPCs(325)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 330) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326)));
75171 break;
75172 case 3:
75173 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 329));
75174 break;
75175 case 2:
75176 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315)) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 326));
75177 break;
75178 default:
75179 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(305, 315));
75180 break;
75181 }
75182 }
75183 }
75184 else if (((double)num2 <= Main.worldSurface || (Main.remixWorld && (double)num2 > Main.rockLayer)) && Main.dayTime && Main.eclipse)
75185 {
75186 bool flag35 = false;
75188 {
75189 flag35 = true;
75190 }
75191 newNPC = ((downedPlantBoss && Main.rand.Next(80) == 0 && !AnyNPCs(477)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 477) : ((Main.rand.Next(50) == 0 && !AnyNPCs(251)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 251) : ((downedPlantBoss && Main.rand.Next(5) == 0 && !AnyNPCs(466)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 466) : ((downedPlantBoss && Main.rand.Next(20) == 0 && !AnyNPCs(463)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 463) : ((downedPlantBoss && Main.rand.Next(20) == 0 && CountNPCS(467) < 2) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 467) : ((Main.rand.Next(15) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 159) : ((flag35 && Main.rand.Next(13) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 253) : ((Main.rand.Next(8) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 469) : ((downedPlantBoss && Main.rand.Next(7) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 468) : ((downedPlantBoss && Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 460) : ((Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 162) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 461) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 166) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 462))))))))))))));
75192 }
75194 {
75195 int num98 = Main.rand.Next(583, 586);
75196 if (Main.tenthAnniversaryWorld && !Main.getGoodWorld && Main.rand.Next(4) != 0)
75197 {
75198 num98 = 583;
75199 }
75200 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num98);
75201 Main.npc[newNPC].ai[2] = 2f;
75202 Main.npc[newNPC].TargetClosest();
75203 Main.npc[newNPC].ai[3] = 0f;
75204 }
75205 else if (!Main.remixWorld && !flag7 && (!Main.dayTime || Main.tile[num, num2].wall > 0) && Main.tile[num8, num9].wall == 244 && !Main.eclipse && !Main.bloodMoon && Main.player[k].RollLuck(30) == 0 && CountNPCS(624) <= Main.rand.Next(3))
75206 {
75207 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 624);
75208 }
75209 else if (!Main.player[k].ZoneCorrupt && !Main.player[k].ZoneCrimson && !flag7 && !Main.eclipse && !Main.bloodMoon && Main.player[k].RollLuck(range) == 0 && ((!Main.remixWorld && (double)num2 >= Main.worldSurface * 0.800000011920929 && (double)num2 < Main.worldSurface * 1.100000023841858) || (Main.remixWorld && (double)num2 > Main.rockLayer && num2 < Main.maxTilesY - 350)) && CountNPCS(624) <= Main.rand.Next(3) && (!Main.dayTime || Main.tile[num, num2].wall > 0) && (Main.tile[num, num2].wall == 63 || Main.tile[num, num2].wall == 2 || Main.tile[num, num2].wall == 196 || Main.tile[num, num2].wall == 197 || Main.tile[num, num2].wall == 198 || Main.tile[num, num2].wall == 199))
75210 {
75211 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 624);
75212 }
75213 else if (Main.hardMode && num3 == 70 && flag7)
75214 {
75215 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 256);
75216 }
75217 else if (num3 == 70 && (double)num2 <= Main.worldSurface && Main.rand.Next(3) != 0)
75218 {
75219 if ((!Main.hardMode && Main.rand.Next(6) == 0) || Main.rand.Next(12) == 0)
75220 {
75221 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 360);
75222 }
75223 else if (Main.rand.Next(3) != 0)
75224 {
75225 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 255) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 254));
75226 }
75227 else if (Main.rand.Next(4) != 0)
75228 {
75229 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 258) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 257));
75230 }
75231 else if (Main.hardMode && Main.rand.Next(3) != 0)
75232 {
75233 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 260);
75234 Main.npc[newNPC].ai[0] = num;
75235 Main.npc[newNPC].ai[1] = num2;
75236 Main.npc[newNPC].netUpdate = true;
75237 }
75238 else
75239 {
75240 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 259);
75241 Main.npc[newNPC].ai[0] = num;
75242 Main.npc[newNPC].ai[1] = num2;
75243 Main.npc[newNPC].netUpdate = true;
75244 }
75245 }
75246 else if (num3 == 70 && Main.hardMode && (double)num2 >= Main.worldSurface && Main.rand.Next(3) != 0 && (!Main.remixWorld || Main.getGoodWorld || num2 < Main.maxTilesY - 360))
75247 {
75248 if (Main.hardMode && Main.player[k].RollLuck(5) == 0)
75249 {
75250 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 374);
75251 }
75252 else if ((!Main.hardMode && Main.rand.Next(4) == 0) || Main.rand.Next(8) == 0)
75253 {
75254 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 360);
75255 }
75256 else if (Main.rand.Next(4) != 0)
75257 {
75258 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 258) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 257));
75259 }
75260 else if (Main.hardMode && Main.rand.Next(3) != 0)
75261 {
75262 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 260);
75263 Main.npc[newNPC].ai[0] = num;
75264 Main.npc[newNPC].ai[1] = num2;
75265 Main.npc[newNPC].netUpdate = true;
75266 }
75267 else
75268 {
75269 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 259);
75270 Main.npc[newNPC].ai[0] = num;
75271 Main.npc[newNPC].ai[1] = num2;
75272 Main.npc[newNPC].netUpdate = true;
75273 }
75274 }
75275 else if (Main.player[k].ZoneCorrupt && Main.rand.Next(maxValue) == 0 && !flag5)
75276 {
75277 newNPC = ((!Main.hardMode || Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 7, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 98, 1));
75278 }
75279 else if (Main.remixWorld && !Main.hardMode && (double)num2 > Main.worldSurface && Main.player[k].RollLuck(100) == 0)
75280 {
75281 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 85) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 629));
75282 }
75283 else if (Main.hardMode && (double)num2 > Main.worldSurface && Main.player[k].RollLuck(Main.tenthAnniversaryWorld ? 25 : 75) == 0)
75284 {
75285 newNPC = ((Main.rand.Next(2) == 0 && Main.player[k].ZoneCorrupt && !AnyNPCs(473)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 473) : ((Main.rand.Next(2) == 0 && Main.player[k].ZoneCrimson && !AnyNPCs(474)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 474) : ((Main.rand.Next(2) == 0 && Main.player[k].ZoneHallow && !AnyNPCs(475)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 475) : ((Main.tenthAnniversaryWorld && Main.rand.Next(2) == 0 && Main.player[k].ZoneJungle && !AnyNPCs(476)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 476) : ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 85) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 629))))));
75286 }
75287 else if (Main.hardMode && Main.tile[num, num2].wall == 2 && Main.rand.Next(20) == 0)
75288 {
75289 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 85);
75290 }
75291 else if (Main.hardMode && (double)num2 <= Main.worldSurface && !Main.dayTime && (Main.rand.Next(20) == 0 || (Main.rand.Next(5) == 0 && Main.moonPhase == 4)))
75292 {
75293 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 82);
75294 }
75295 else if (Main.hardMode && Main.halloween && (double)num2 <= Main.worldSurface && !Main.dayTime && Main.rand.Next(10) == 0)
75296 {
75297 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 304);
75298 }
75299 else if (num49 == 60 && Main.player[k].RollLuck(500) == 0 && !Main.dayTime)
75300 {
75301 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 52);
75302 }
75303 else if (num49 == 60 && (double)num2 > Main.worldSurface && Main.rand.Next(60) == 0)
75304 {
75305 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 219);
75306 }
75307 else if ((double)num2 > Main.worldSurface && num2 < Main.maxTilesY - 210 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneJungle && !Main.player[k].ZoneHallow && Main.rand.Next(8) == 0)
75308 {
75309 if (Main.player[k].RollLuck(goldCritterChance) == 0)
75310 {
75311 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 448);
75312 }
75313 else
75314 {
75315 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 357);
75316 }
75317 }
75318 else if ((double)num2 > Main.worldSurface && num2 < Main.maxTilesY - 210 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneJungle && !Main.player[k].ZoneHallow && Main.rand.Next(13) == 0)
75319 {
75320 if (Main.player[k].RollLuck(goldCritterChance) == 0)
75321 {
75322 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 447);
75323 }
75324 else
75325 {
75326 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 300);
75327 }
75328 }
75329 else if ((double)num2 > Main.worldSurface && (double)num2 < (Main.rockLayer + (double)Main.maxTilesY) / 2.0 && !Main.player[k].ZoneSnow && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && !Main.player[k].ZoneHallow && Main.rand.Next(13) == 0)
75330 {
75331 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 359);
75332 }
75333 else if (flag20 && Main.player[k].ZoneJungle && !Main.player[k].ZoneCrimson && !Main.player[k].ZoneCorrupt && Main.rand.Next(7) == 0)
75334 {
75335 if (Main.dayTime && Main.time < 43200.00064373016 && Main.rand.Next(3) != 0)
75336 {
75337 switch (Main.rand.Next(5))
75338 {
75339 case 0:
75340 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 671);
75341 break;
75342 case 1:
75343 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 672);
75344 break;
75345 case 2:
75346 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 673);
75347 break;
75348 case 3:
75349 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 674);
75350 break;
75351 default:
75352 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 675);
75353 break;
75354 }
75355 }
75356 else
75357 {
75358 SpawnNPC_SpawnFrog(num, num2, k);
75359 }
75360 }
75361 else if (num49 == 225 && Main.rand.Next(2) == 0)
75362 {
75363 if (Main.hardMode && Main.rand.Next(4) != 0)
75364 {
75365 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 176);
75366 if (Main.rand.Next(10) == 0)
75367 {
75368 Main.npc[newNPC].SetDefaults(-18);
75369 }
75370 if (Main.rand.Next(10) == 0)
75371 {
75372 Main.npc[newNPC].SetDefaults(-19);
75373 }
75374 if (Main.rand.Next(10) == 0)
75375 {
75376 Main.npc[newNPC].SetDefaults(-20);
75377 }
75378 if (Main.rand.Next(10) == 0)
75379 {
75380 Main.npc[newNPC].SetDefaults(-21);
75381 }
75382 }
75383 else
75384 {
75385 switch (Main.rand.Next(8))
75386 {
75387 case 0:
75388 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 231);
75389 if (Main.rand.Next(4) == 0)
75390 {
75391 Main.npc[newNPC].SetDefaults(-56);
75392 }
75393 else if (Main.rand.Next(4) == 0)
75394 {
75395 Main.npc[newNPC].SetDefaults(-57);
75396 }
75397 break;
75398 case 1:
75399 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 232);
75400 if (Main.rand.Next(4) == 0)
75401 {
75402 Main.npc[newNPC].SetDefaults(-58);
75403 }
75404 else if (Main.rand.Next(4) == 0)
75405 {
75406 Main.npc[newNPC].SetDefaults(-59);
75407 }
75408 break;
75409 case 2:
75410 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 233);
75411 if (Main.rand.Next(4) == 0)
75412 {
75413 Main.npc[newNPC].SetDefaults(-60);
75414 }
75415 else if (Main.rand.Next(4) == 0)
75416 {
75417 Main.npc[newNPC].SetDefaults(-61);
75418 }
75419 break;
75420 case 3:
75421 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 234);
75422 if (Main.rand.Next(4) == 0)
75423 {
75424 Main.npc[newNPC].SetDefaults(-62);
75425 }
75426 else if (Main.rand.Next(4) == 0)
75427 {
75428 Main.npc[newNPC].SetDefaults(-63);
75429 }
75430 break;
75431 case 4:
75432 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 235);
75433 if (Main.rand.Next(4) == 0)
75434 {
75435 Main.npc[newNPC].SetDefaults(-64);
75436 }
75437 else if (Main.rand.Next(4) == 0)
75438 {
75439 Main.npc[newNPC].SetDefaults(-65);
75440 }
75441 break;
75442 default:
75443 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 42);
75444 if (Main.rand.Next(4) == 0)
75445 {
75446 Main.npc[newNPC].SetDefaults(-16);
75447 }
75448 else if (Main.rand.Next(4) == 0)
75449 {
75450 Main.npc[newNPC].SetDefaults(-17);
75451 }
75452 break;
75453 }
75454 }
75455 }
75456 else if (num49 == 60 && Main.hardMode && Main.rand.Next(3) != 0)
75457 {
75458 if (flag20 && !Main.dayTime && Main.rand.Next(3) == 0)
75459 {
75460 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 152);
75461 }
75462 else if (flag20 && Main.dayTime && Main.rand.Next(4) != 0)
75463 {
75464 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 177);
75465 }
75466 else if ((double)num2 > Main.worldSurface && Main.rand.Next(100) == 0)
75467 {
75468 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 205);
75469 }
75470 else if ((double)num2 > Main.worldSurface && Main.rand.Next(5) == 0)
75471 {
75472 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 236);
75473 }
75474 else if ((double)num2 > Main.worldSurface && Main.rand.Next(4) != 0)
75475 {
75476 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 176);
75477 if (Main.rand.Next(10) == 0)
75478 {
75479 Main.npc[newNPC].SetDefaults(-18);
75480 }
75481 if (Main.rand.Next(10) == 0)
75482 {
75483 Main.npc[newNPC].SetDefaults(-19);
75484 }
75485 if (Main.rand.Next(10) == 0)
75486 {
75487 Main.npc[newNPC].SetDefaults(-20);
75488 }
75489 if (Main.rand.Next(10) == 0)
75490 {
75491 Main.npc[newNPC].SetDefaults(-21);
75492 }
75493 }
75494 else if (Main.rand.Next(3) == 0)
75495 {
75496 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 175);
75497 Main.npc[newNPC].ai[0] = num;
75498 Main.npc[newNPC].ai[1] = num2;
75499 Main.npc[newNPC].netUpdate = true;
75500 }
75501 else
75502 {
75503 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 153);
75504 }
75505 }
75506 else if (((num49 == 226 || num49 == 232) && flag4) || (Main.remixWorld && flag4))
75507 {
75508 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 198) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 226));
75509 }
75510 else if (num50 == 86 && Main.rand.Next(8) != 0)
75511 {
75512 switch (Main.rand.Next(8))
75513 {
75514 case 0:
75515 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 231);
75516 if (Main.rand.Next(4) == 0)
75517 {
75518 Main.npc[newNPC].SetDefaults(-56);
75519 }
75520 else if (Main.rand.Next(4) == 0)
75521 {
75522 Main.npc[newNPC].SetDefaults(-57);
75523 }
75524 break;
75525 case 1:
75526 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 232);
75527 if (Main.rand.Next(4) == 0)
75528 {
75529 Main.npc[newNPC].SetDefaults(-58);
75530 }
75531 else if (Main.rand.Next(4) == 0)
75532 {
75533 Main.npc[newNPC].SetDefaults(-59);
75534 }
75535 break;
75536 case 2:
75537 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 233);
75538 if (Main.rand.Next(4) == 0)
75539 {
75540 Main.npc[newNPC].SetDefaults(-60);
75541 }
75542 else if (Main.rand.Next(4) == 0)
75543 {
75544 Main.npc[newNPC].SetDefaults(-61);
75545 }
75546 break;
75547 case 3:
75548 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 234);
75549 if (Main.rand.Next(4) == 0)
75550 {
75551 Main.npc[newNPC].SetDefaults(-62);
75552 }
75553 else if (Main.rand.Next(4) == 0)
75554 {
75555 Main.npc[newNPC].SetDefaults(-63);
75556 }
75557 break;
75558 case 4:
75559 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 235);
75560 if (Main.rand.Next(4) == 0)
75561 {
75562 Main.npc[newNPC].SetDefaults(-64);
75563 }
75564 else if (Main.rand.Next(4) == 0)
75565 {
75566 Main.npc[newNPC].SetDefaults(-65);
75567 }
75568 break;
75569 default:
75570 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 42);
75571 if (Main.rand.Next(4) == 0)
75572 {
75573 Main.npc[newNPC].SetDefaults(-16);
75574 }
75575 else if (Main.rand.Next(4) == 0)
75576 {
75577 Main.npc[newNPC].SetDefaults(-17);
75578 }
75579 break;
75580 }
75581 }
75582 else if (num49 == 60 && ((!Main.remixWorld && (double)num2 > (Main.worldSurface + Main.rockLayer) / 2.0) || (Main.remixWorld && ((double)num2 < Main.rockLayer || Main.rand.Next(2) == 0))))
75583 {
75584 if (Main.rand.Next(4) == 0)
75585 {
75586 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 204);
75587 }
75588 else if (Main.rand.Next(4) == 0)
75589 {
75590 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 43);
75591 Main.npc[newNPC].ai[0] = num;
75592 Main.npc[newNPC].ai[1] = num2;
75593 Main.npc[newNPC].netUpdate = true;
75594 }
75595 else
75596 {
75597 switch (Main.rand.Next(8))
75598 {
75599 case 0:
75600 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 231);
75601 if (Main.rand.Next(4) == 0)
75602 {
75603 Main.npc[newNPC].SetDefaults(-56);
75604 }
75605 else if (Main.rand.Next(4) == 0)
75606 {
75607 Main.npc[newNPC].SetDefaults(-57);
75608 }
75609 break;
75610 case 1:
75611 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 232);
75612 if (Main.rand.Next(4) == 0)
75613 {
75614 Main.npc[newNPC].SetDefaults(-58);
75615 }
75616 else if (Main.rand.Next(4) == 0)
75617 {
75618 Main.npc[newNPC].SetDefaults(-59);
75619 }
75620 break;
75621 case 2:
75622 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 233);
75623 if (Main.rand.Next(4) == 0)
75624 {
75625 Main.npc[newNPC].SetDefaults(-60);
75626 }
75627 else if (Main.rand.Next(4) == 0)
75628 {
75629 Main.npc[newNPC].SetDefaults(-61);
75630 }
75631 break;
75632 case 3:
75633 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 234);
75634 if (Main.rand.Next(4) == 0)
75635 {
75636 Main.npc[newNPC].SetDefaults(-62);
75637 }
75638 else if (Main.rand.Next(4) == 0)
75639 {
75640 Main.npc[newNPC].SetDefaults(-63);
75641 }
75642 break;
75643 case 4:
75644 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 235);
75645 if (Main.rand.Next(4) == 0)
75646 {
75647 Main.npc[newNPC].SetDefaults(-64);
75648 }
75649 else if (Main.rand.Next(4) == 0)
75650 {
75651 Main.npc[newNPC].SetDefaults(-65);
75652 }
75653 break;
75654 default:
75655 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 42);
75656 if (Main.rand.Next(4) == 0)
75657 {
75658 Main.npc[newNPC].SetDefaults(-16);
75659 }
75660 else if (Main.rand.Next(4) == 0)
75661 {
75662 Main.npc[newNPC].SetDefaults(-17);
75663 }
75664 break;
75665 }
75666 }
75667 }
75668 else if (num49 == 60 && Main.rand.Next(4) == 0)
75669 {
75670 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 51);
75671 }
75672 else if (num49 == 60 && Main.rand.Next(8) == 0)
75673 {
75674 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 56);
75675 Main.npc[newNPC].ai[0] = num;
75676 Main.npc[newNPC].ai[1] = num2;
75677 Main.npc[newNPC].netUpdate = true;
75678 }
75679 else if (Sandstorm.Happening && Main.player[k].ZoneSandstorm && TileID.Sets.Conversion.Sand[num49] && Spawning_SandstoneCheck(num, num2))
75680 {
75681 if (!downedBoss1 && !Main.hardMode)
75682 {
75683 newNPC = ((Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 546) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 69) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 61)));
75684 }
75685 else if (Main.hardMode && Main.rand.Next(20) == 0 && !AnyNPCs(541))
75686 {
75687 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 541);
75688 }
75689 else if (Main.hardMode && !flag5 && Main.rand.Next(3) == 0 && CountNPCS(510) < 4)
75690 {
75691 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, (num2 + 10) * 16, 510);
75692 }
75693 else if (!Main.hardMode || flag5 || Main.rand.Next(2) != 0)
75694 {
75695 newNPC = ((Main.hardMode && num49 == 53 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 78) : ((Main.hardMode && num49 == 112 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 79) : ((Main.hardMode && num49 == 234 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 630) : ((Main.hardMode && num49 == 116 && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 80) : ((Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 546) : ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 581) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 580)))))));
75696 }
75697 else
75698 {
75699 int num99 = 542;
75700 if (TileID.Sets.Corrupt[num49])
75701 {
75702 num99 = 543;
75703 }
75704 if (TileID.Sets.Crimson[num49])
75705 {
75706 num99 = 544;
75707 }
75708 if (TileID.Sets.Hallow[num49])
75709 {
75710 num99 = 545;
75711 }
75712 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num99);
75713 }
75714 }
75715 else if (Main.hardMode && num49 == 53 && Main.rand.Next(3) == 0)
75716 {
75717 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 78);
75718 }
75719 else if (Main.hardMode && num49 == 112 && Main.rand.Next(2) == 0)
75720 {
75721 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 79);
75722 }
75723 else if (Main.hardMode && num49 == 234 && Main.rand.Next(2) == 0)
75724 {
75725 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 630);
75726 }
75727 else if (Main.hardMode && num49 == 116 && Main.rand.Next(2) == 0)
75728 {
75729 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 80);
75730 }
75731 else if (Main.hardMode && !flag7 && flag17 && (num49 == 116 || num49 == 117 || num49 == 109 || num49 == 164))
75732 {
75733 if (downedPlantBoss && (Main.remixWorld || (!Main.dayTime && Main.time < 16200.0)) && flag20 && Main.player[k].RollLuck(10) == 0 && !AnyNPCs(661))
75734 {
75735 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 661);
75736 }
75737 else if (!flag24 || AnyNPCs(244) || Main.rand.Next(12) != 0)
75738 {
75739 newNPC = ((!Main.dayTime && Main.rand.Next(2) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 122) : ((Main.rand.Next(10) != 0 && (!Main.player[k].ZoneWaterCandle || Main.rand.Next(10) != 0)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 75) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 86)));
75740 }
75741 else
75742 {
75743 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 244);
75744 }
75745 }
75746 else if (!flag5 && Main.hardMode && Main.rand.Next(50) == 0 && !flag7 && flag21 && (num49 == 116 || num49 == 117 || num49 == 109 || num49 == 164))
75747 {
75748 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 84);
75749 }
75750 else if ((num49 == 204 && Main.player[k].ZoneCrimson) || num49 == 199 || num49 == 200 || num49 == 203 || num49 == 234 || num49 == 662)
75751 {
75752 bool flag36 = (double)num2 >= Main.rockLayer;
75753 if (Main.remixWorld)
75754 {
75755 flag36 = (double)num2 <= Main.rockLayer;
75756 }
75757 if (Main.hardMode && flag36 && Main.rand.Next(40) == 0 && !flag5)
75758 {
75759 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 179);
75760 }
75761 else if (Main.hardMode && flag36 && Main.rand.Next(5) == 0 && !flag5)
75762 {
75763 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 182);
75764 }
75765 else if (Main.hardMode && flag36 && Main.rand.Next(2) == 0)
75766 {
75767 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 268);
75768 }
75769 else if (Main.hardMode && Main.rand.Next(3) == 0)
75770 {
75771 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 183);
75772 if (Main.rand.Next(3) == 0)
75773 {
75774 Main.npc[newNPC].SetDefaults(-24);
75775 }
75776 else if (Main.rand.Next(3) == 0)
75777 {
75778 Main.npc[newNPC].SetDefaults(-25);
75779 }
75780 }
75781 else if (Main.hardMode && (Main.rand.Next(2) == 0 || ((double)num2 > Main.worldSurface && !Main.remixWorld)))
75782 {
75783 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 174);
75784 }
75785 else if ((Main.tile[num, num2].wall > 0 && Main.rand.Next(4) != 0) || Main.rand.Next(8) == 0)
75786 {
75787 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 239);
75788 }
75789 else if (Main.rand.Next(2) == 0)
75790 {
75791 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 181);
75792 }
75793 else
75794 {
75795 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 173);
75796 if (Main.rand.Next(3) == 0)
75797 {
75798 Main.npc[newNPC].SetDefaults(-22);
75799 }
75800 else if (Main.rand.Next(3) == 0)
75801 {
75802 Main.npc[newNPC].SetDefaults(-23);
75803 }
75804 }
75805 }
75806 else if ((num49 == 22 && Main.player[k].ZoneCorrupt) || num49 == 23 || num49 == 25 || num49 == 112 || num49 == 163 || num49 == 661)
75807 {
75808 bool flag37 = (double)num2 >= Main.rockLayer;
75809 if (Main.remixWorld)
75810 {
75811 flag37 = (double)num2 <= Main.rockLayer;
75812 }
75813 if (Main.hardMode && flag37 && Main.rand.Next(40) == 0 && !flag5)
75814 {
75815 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 83);
75816 }
75817 else if (Main.hardMode && flag37 && Main.rand.Next(3) == 0)
75818 {
75819 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 101);
75820 Main.npc[newNPC].ai[0] = num;
75821 Main.npc[newNPC].ai[1] = num2;
75822 Main.npc[newNPC].netUpdate = true;
75823 }
75824 else if (Main.hardMode && Main.rand.Next(3) == 0)
75825 {
75826 newNPC = ((Main.rand.Next(3) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 81) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 121));
75827 }
75828 else if (Main.hardMode && (Main.rand.Next(2) == 0 || flag37))
75829 {
75830 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 94);
75831 }
75832 else
75833 {
75834 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 6);
75835 if (Main.rand.Next(3) == 0)
75836 {
75837 Main.npc[newNPC].SetDefaults(-11);
75838 }
75839 else if (Main.rand.Next(3) == 0)
75840 {
75841 Main.npc[newNPC].SetDefaults(-12);
75842 }
75843 }
75844 }
75845 else if (flag20)
75846 {
75847 bool flag38 = (float)Math.Abs(num - Main.maxTilesX / 2) / (float)(Main.maxTilesX / 2) > 0.33f;
75848 if (flag38 && AnyDanger())
75849 {
75850 flag38 = false;
75851 }
75852 if (Main.player[k].ZoneGraveyard && !flag7 && (num3 == 2 || num3 == 477) && Main.rand.Next(10) == 0)
75853 {
75854 if (Main.rand.Next(2) == 0)
75855 {
75856 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 606);
75857 }
75858 else
75859 {
75860 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 610);
75861 }
75862 }
75863 else if (Main.player[k].ZoneSnow && Main.hardMode && flag24 && !AnyNPCs(243) && Main.player[k].RollLuck(20) == 0)
75864 {
75865 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 243);
75866 }
75867 else if (!Main.player[k].ZoneSnow && Main.hardMode && flag24 && CountNPCS(250) < 2 && Main.rand.Next(10) == 0)
75868 {
75869 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 250);
75870 }
75871 else if (flag38 && Main.hardMode && downedGolemBoss && ((!downedMartians && Main.rand.Next(100) == 0) || Main.rand.Next(400) == 0) && !AnyNPCs(399))
75872 {
75873 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 399);
75874 }
75875 else if (!Main.player[k].ZoneGraveyard && Main.dayTime)
75876 {
75877 int num100 = Math.Abs(num - Main.spawnTileX);
75878 if (!flag7 && num100 < Main.maxTilesX / 2 && Main.rand.Next(15) == 0 && (num49 == 2 || num49 == 477 || num49 == 109 || num49 == 492 || num49 == 147 || num49 == 161))
75879 {
75880 if (num49 == 147 || num49 == 161)
75881 {
75882 if (Main.rand.Next(2) == 0)
75883 {
75884 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 148);
75885 }
75886 else
75887 {
75888 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 149);
75889 }
75890 }
75891 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(stinkBugChance) == 0 && flag20)
75892 {
75893 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 669);
75894 if (Main.rand.Next(4) == 0)
75895 {
75896 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, 669);
75897 }
75898 if (Main.rand.Next(4) == 0)
75899 {
75900 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, 669);
75901 }
75902 }
75903 else if (!tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance) == 0 && flag20)
75904 {
75905 if (Main.player[k].RollLuck(goldCritterChance) == 0)
75906 {
75907 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 444);
75908 }
75909 else
75910 {
75911 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 356);
75912 }
75913 if (Main.rand.Next(4) == 0)
75914 {
75915 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, 356);
75916 }
75917 if (Main.rand.Next(4) == 0)
75918 {
75919 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, 356);
75920 }
75921 }
75922 else if (tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(butterflyChance / 2) == 0 && flag20)
75923 {
75924 if (Main.player[k].RollLuck(goldCritterChance) == 0)
75925 {
75926 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 605);
75927 }
75928 else
75929 {
75930 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
75931 }
75932 if (Main.rand.Next(3) != 0)
75933 {
75934 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
75935 }
75936 if (Main.rand.Next(2) == 0)
75937 {
75938 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
75939 }
75940 if (Main.rand.Next(3) == 0)
75941 {
75942 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
75943 }
75944 if (Main.rand.Next(4) == 0)
75945 {
75946 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 604);
75947 }
75948 }
75949 else if (Main.player[k].RollLuck(goldCritterChance) == 0)
75950 {
75951 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 443);
75952 }
75953 else if (Main.player[k].RollLuck(goldCritterChance) == 0 && (double)num2 <= Main.worldSurface)
75954 {
75955 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 539);
75956 }
75957 else if (Main.halloween && Main.rand.Next(3) != 0)
75958 {
75959 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 303);
75960 }
75961 else if (Main.xMas && Main.rand.Next(3) != 0)
75962 {
75963 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 337);
75964 }
75965 else if (BirthdayParty.PartyIsUp && Main.rand.Next(3) != 0)
75966 {
75967 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 540);
75968 }
75969 else if (Main.rand.Next(3) == 0 && (double)num2 <= Main.worldSurface)
75970 {
75971 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Utils.SelectRandom(Main.rand, new short[2] { 299, 538 }));
75972 }
75973 else
75974 {
75975 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 46);
75976 }
75977 }
75978 else if (!flag7 && num > WorldGen.beachDistance && num < Main.maxTilesX - WorldGen.beachDistance && Main.rand.Next(12) == 0 && num49 == 53)
75979 {
75980 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(366, 368));
75981 }
75982 else if ((num49 == 2 || num49 == 477 || num49 == 53) && !tooWindyForButterflies && !Main.raining && Main.dayTime && Main.rand.Next(3) != 0 && ((double)num2 <= Main.worldSurface || Main.remixWorld) && FindCattailTop(num, num2, out cattailX, out cattailY))
75983 {
75984 if (Main.player[k].RollLuck(goldCritterChance) == 0)
75985 {
75986 NewNPC(GetSpawnSourceForNaturalSpawn(), cattailX * 16 + 8, cattailY * 16, 601);
75987 }
75988 else
75989 {
75991 }
75992 if (Main.rand.Next(3) == 0)
75993 {
75995 }
75996 if (Main.rand.Next(3) == 0)
75997 {
75999 }
76000 }
76001 else if (!flag7 && num100 < Main.maxTilesX / 3 && Main.dayTime && Main.time < 18000.0 && (num49 == 2 || num49 == 477 || num49 == 109 || num49 == 492) && Main.rand.Next(4) == 0 && (double)num2 <= Main.worldSurface && CountNPCS(74) + CountNPCS(297) + CountNPCS(298) < 6)
76002 {
76003 int num101 = Main.rand.Next(4);
76004 if (Main.player[k].RollLuck(goldCritterChance) == 0)
76005 {
76006 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 442);
76007 }
76008 else
76009 {
76010 switch (num101)
76011 {
76012 case 0:
76013 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 297);
76014 break;
76015 case 1:
76016 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 298);
76017 break;
76018 default:
76019 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 74);
76020 break;
76021 }
76022 }
76023 }
76024 else if (!flag7 && num100 < Main.maxTilesX / 3 && Main.rand.Next(15) == 0 && (num49 == 2 || num49 == 477 || num49 == 109 || num49 == 492 || num49 == 147))
76025 {
76026 int num102 = Main.rand.Next(4);
76027 if (Main.player[k].RollLuck(goldCritterChance) == 0)
76028 {
76029 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 442);
76030 }
76031 else
76032 {
76033 switch (num102)
76034 {
76035 case 0:
76036 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 297);
76037 break;
76038 case 1:
76039 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 298);
76040 break;
76041 default:
76042 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 74);
76043 break;
76044 }
76045 }
76046 }
76047 else if (!flag7 && num100 > Main.maxTilesX / 3 && num49 == 2 && Main.rand.Next(300) == 0 && !AnyNPCs(50))
76048 {
76049 SpawnOnPlayer(k, 50);
76050 }
76051 else if (!flag15 && num49 == 53 && (num < WorldGen.beachDistance || num > Main.maxTilesX - WorldGen.beachDistance))
76052 {
76053 if (!flag7 && Main.rand.Next(10) == 0)
76054 {
76055 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 602);
76056 }
76057 else if (flag7)
76058 {
76059 int num103 = -1;
76060 int num104 = -1;
76062 {
76063 for (int num105 = num2 - 1; num105 > num2 - 50; num105--)
76064 {
76065 if (Main.tile[num, num105].liquid == 0 && !WorldGen.SolidTile(num, num105) && !WorldGen.SolidTile(num, num105 + 1) && !WorldGen.SolidTile(num, num105 + 2))
76066 {
76067 num103 = num105 + 2;
76068 if (!WorldGen.SolidTile(num, num103 + 1) && !WorldGen.SolidTile(num, num103 + 2))
76069 {
76070 num104 = num103 + 2;
76071 }
76072 break;
76073 }
76074 }
76075 if (num103 > num2)
76076 {
76077 num103 = num2;
76078 }
76079 if (num104 > num2)
76080 {
76081 num104 = num2;
76082 }
76083 }
76084 if (Main.rand.Next(10) == 0)
76085 {
76086 int num106 = Main.rand.Next(3);
76087 if (num106 == 0 && num103 > 0)
76088 {
76089 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num103 * 16, 625);
76090 }
76091 else if (num106 == 1 && num104 > 0)
76092 {
76093 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num104 * 16, 615);
76094 }
76095 else if (num106 == 2)
76096 {
76097 int num107 = num2;
76098 if (num104 > 0)
76099 {
76100 num107 = num104;
76101 }
76102 if (Main.player[k].RollLuck(goldCritterChance) == 0)
76103 {
76104 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num107 * 16, 627);
76105 }
76106 else
76107 {
76108 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num107 * 16, 626);
76109 }
76110 }
76111 }
76112 }
76113 }
76114 else if (!flag7 && num49 == 53 && Main.rand.Next(5) == 0 && Spawning_SandstoneCheck(num, num2) && !flag7)
76115 {
76116 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 69);
76117 }
76118 else if (num49 == 53 && !flag7)
76119 {
76120 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 61);
76121 }
76122 else if (!flag7 && (num100 > Main.maxTilesX / 3 || Main.remixWorld) && (Main.rand.Next(15) == 0 || (!downedGoblins && WorldGen.shadowOrbSmashed && Main.rand.Next(7) == 0)))
76123 {
76124 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 73);
76125 }
76126 else if (Main.raining && Main.rand.Next(4) == 0)
76127 {
76128 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 224);
76129 }
76130 else if (!flag7 && Main.raining && Main.rand.Next(2) == 0)
76131 {
76132 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 225);
76133 }
76134 else if (!flag7 && num50 == 0 && isItAHappyWindyDay && flag19 && Main.rand.Next(3) != 0)
76135 {
76136 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 594);
76137 }
76138 else if (!flag7 && num50 == 0 && (num3 == 2 || num3 == 477) && isItAHappyWindyDay && flag19 && Main.rand.Next(10) != 0)
76139 {
76140 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 628);
76141 }
76142 else if (!flag7)
76143 {
76144 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 1);
76145 switch (num49)
76146 {
76147 case 60:
76148 Main.npc[newNPC].SetDefaults(-10);
76149 break;
76150 case 147:
76151 case 161:
76152 Main.npc[newNPC].SetDefaults(147);
76153 break;
76154 default:
76155 if (Main.halloween && Main.rand.Next(3) != 0)
76156 {
76157 Main.npc[newNPC].SetDefaults(302);
76158 }
76159 else if (Main.xMas && Main.rand.Next(3) != 0)
76160 {
76161 Main.npc[newNPC].SetDefaults(Main.rand.Next(333, 337));
76162 }
76163 else if (Main.rand.Next(3) == 0 || (num100 < 200 && !Main.expertMode))
76164 {
76165 Main.npc[newNPC].SetDefaults(-3);
76166 }
76167 else if (Main.rand.Next(10) == 0 && (num100 > 400 || Main.expertMode))
76168 {
76169 Main.npc[newNPC].SetDefaults(-7);
76170 }
76171 break;
76172 }
76173 }
76174 }
76175 else
76176 {
76177 if (!Main.player[k].ZoneGraveyard && !tooWindyForButterflies && (num49 == 2 || num49 == 477 || num49 == 109 || num49 == 492) && !Main.raining && Main.rand.Next(fireFlyChance) == 0 && (double)num2 <= Main.worldSurface)
76178 {
76179 int num108 = 355;
76180 if (num49 == 109)
76181 {
76182 num108 = 358;
76183 }
76184 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, num108);
76185 if (Main.rand.Next(fireFlyMultiple) == 0)
76186 {
76187 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 - 16, num2 * 16, num108);
76188 }
76189 if (Main.rand.Next(fireFlyMultiple) == 0)
76190 {
76191 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8 + 16, num2 * 16, num108);
76192 }
76193 if (Main.rand.Next(fireFlyMultiple) == 0)
76194 {
76195 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16 - 16, num108);
76196 }
76197 if (Main.rand.Next(fireFlyMultiple) == 0)
76198 {
76199 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16 + 16, num108);
76200 }
76201 }
76202 else if ((Main.halloween || Main.player[k].ZoneGraveyard) && Main.rand.Next(12) == 0)
76203 {
76204 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 301);
76205 }
76206 else if (Main.player[k].ZoneGraveyard && Main.rand.Next(30) == 0)
76207 {
76208 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 316);
76209 }
76210 else if (Main.player[k].ZoneGraveyard && Main.hardMode && (double)num2 <= Main.worldSurface && Main.rand.Next(10) == 0)
76211 {
76212 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 304);
76213 }
76214 else if (Main.rand.Next(6) == 0 || (Main.moonPhase == 4 && Main.rand.Next(2) == 0))
76215 {
76216 if (Main.hardMode && Main.rand.Next(3) == 0)
76217 {
76218 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 133);
76219 }
76220 else if (Main.halloween && Main.rand.Next(2) == 0)
76221 {
76222 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(317, 319));
76223 }
76224 else if (Main.rand.Next(2) == 0)
76225 {
76226 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 2);
76227 if (Main.rand.Next(4) == 0)
76228 {
76229 Main.npc[newNPC].SetDefaults(-43);
76230 }
76231 }
76232 else
76233 {
76234 switch (Main.rand.Next(5))
76235 {
76236 case 0:
76237 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 190);
76238 if (Main.rand.Next(3) == 0)
76239 {
76240 Main.npc[newNPC].SetDefaults(-38);
76241 }
76242 break;
76243 case 1:
76244 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 191);
76245 if (Main.rand.Next(3) == 0)
76246 {
76247 Main.npc[newNPC].SetDefaults(-39);
76248 }
76249 break;
76250 case 2:
76251 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 192);
76252 if (Main.rand.Next(3) == 0)
76253 {
76254 Main.npc[newNPC].SetDefaults(-40);
76255 }
76256 break;
76257 case 3:
76258 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 193);
76259 if (Main.rand.Next(3) == 0)
76260 {
76261 Main.npc[newNPC].SetDefaults(-41);
76262 }
76263 break;
76264 case 4:
76265 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 194);
76266 if (Main.rand.Next(3) == 0)
76267 {
76268 Main.npc[newNPC].SetDefaults(-42);
76269 }
76270 break;
76271 }
76272 }
76273 }
76274 else if (Main.hardMode && Main.rand.Next(50) == 0 && Main.bloodMoon && !AnyNPCs(109))
76275 {
76276 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 109);
76277 }
76278 else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[k].ZoneGraveyard))
76279 {
76280 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 53);
76281 }
76282 else if (Main.rand.Next(250) == 0 && (Main.bloodMoon || Main.player[k].ZoneGraveyard))
76283 {
76284 NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 536);
76285 }
76286 else if (!Main.dayTime && Main.moonPhase == 0 && Main.hardMode && Main.rand.Next(3) != 0)
76287 {
76288 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 104);
76289 }
76290 else if (!Main.dayTime && Main.hardMode && Main.rand.Next(3) == 0)
76291 {
76292 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 140);
76293 }
76294 else if (Main.bloodMoon && Main.rand.Next(5) < 2)
76295 {
76296 newNPC = ((Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 490) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 489));
76297 }
76298 else if (num3 == 147 || num3 == 161 || num3 == 163 || num3 == 164 || num3 == 162)
76299 {
76300 newNPC = ((!Main.player[k].ZoneGraveyard && Main.hardMode && Main.rand.Next(4) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 169) : ((!Main.player[k].ZoneGraveyard && Main.hardMode && Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 155) : ((!Main.expertMode || Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 161) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 431))));
76301 }
76302 else if (Main.raining && Main.rand.Next(2) == 0)
76303 {
76304 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 223);
76305 if (Main.rand.Next(3) == 0)
76306 {
76307 if (Main.rand.Next(2) == 0)
76308 {
76309 Main.npc[newNPC].SetDefaults(-54);
76310 }
76311 else
76312 {
76313 Main.npc[newNPC].SetDefaults(-55);
76314 }
76315 }
76316 }
76317 else
76318 {
76319 int num109 = Main.rand.Next(7);
76320 int num110 = 12;
76321 int maxValue4 = 20;
76322 if (Main.player[k].statLifeMax <= 100)
76323 {
76324 num110 = 5;
76325 num110 -= Main.CurrentFrameFlags.ActivePlayersCount / 2;
76326 if (num110 < 2)
76327 {
76328 num110 = 2;
76329 }
76330 }
76331 if (Main.player[k].ZoneGraveyard && Main.rand.Next(maxValue4) == 0)
76332 {
76333 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 632);
76334 }
76335 else if (Main.rand.Next(num110) == 0)
76336 {
76337 newNPC = ((!Main.expertMode || Main.rand.Next(2) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 590) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 591));
76338 }
76339 else if (Main.halloween && Main.rand.Next(2) == 0)
76340 {
76341 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(319, 322));
76342 }
76343 else if (Main.xMas && Main.rand.Next(2) == 0)
76344 {
76345 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(331, 333));
76346 }
76347 else if (num109 == 0 && Main.expertMode && Main.rand.Next(3) == 0)
76348 {
76349 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 430);
76350 }
76351 else if (num109 == 2 && Main.expertMode && Main.rand.Next(3) == 0)
76352 {
76353 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 432);
76354 }
76355 else if (num109 == 3 && Main.expertMode && Main.rand.Next(3) == 0)
76356 {
76357 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 433);
76358 }
76359 else if (num109 == 4 && Main.expertMode && Main.rand.Next(3) == 0)
76360 {
76361 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 434);
76362 }
76363 else if (num109 == 5 && Main.expertMode && Main.rand.Next(3) == 0)
76364 {
76365 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 435);
76366 }
76367 else if (num109 == 6 && Main.expertMode && Main.rand.Next(3) == 0)
76368 {
76369 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 436);
76370 }
76371 else
76372 {
76373 switch (num109)
76374 {
76375 case 0:
76376 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 3);
76377 if (Main.rand.Next(3) == 0)
76378 {
76379 if (Main.rand.Next(2) == 0)
76380 {
76381 Main.npc[newNPC].SetDefaults(-26);
76382 }
76383 else
76384 {
76385 Main.npc[newNPC].SetDefaults(-27);
76386 }
76387 }
76388 break;
76389 case 1:
76390 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 132);
76391 if (Main.rand.Next(3) == 0)
76392 {
76393 if (Main.rand.Next(2) == 0)
76394 {
76395 Main.npc[newNPC].SetDefaults(-28);
76396 }
76397 else
76398 {
76399 Main.npc[newNPC].SetDefaults(-29);
76400 }
76401 }
76402 break;
76403 case 2:
76404 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 186);
76405 if (Main.rand.Next(3) == 0)
76406 {
76407 if (Main.rand.Next(2) == 0)
76408 {
76409 Main.npc[newNPC].SetDefaults(-30);
76410 }
76411 else
76412 {
76413 Main.npc[newNPC].SetDefaults(-31);
76414 }
76415 }
76416 break;
76417 case 3:
76418 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 187);
76419 if (Main.rand.Next(3) == 0)
76420 {
76421 if (Main.rand.Next(2) == 0)
76422 {
76423 Main.npc[newNPC].SetDefaults(-32);
76424 }
76425 else
76426 {
76427 Main.npc[newNPC].SetDefaults(-33);
76428 }
76429 }
76430 break;
76431 case 4:
76432 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 188);
76433 if (Main.rand.Next(3) == 0)
76434 {
76435 if (Main.rand.Next(2) == 0)
76436 {
76437 Main.npc[newNPC].SetDefaults(-34);
76438 }
76439 else
76440 {
76441 Main.npc[newNPC].SetDefaults(-35);
76442 }
76443 }
76444 break;
76445 case 5:
76446 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 189);
76447 if (Main.rand.Next(3) == 0)
76448 {
76449 if (Main.rand.Next(2) == 0)
76450 {
76451 Main.npc[newNPC].SetDefaults(-36);
76452 }
76453 else
76454 {
76455 Main.npc[newNPC].SetDefaults(-37);
76456 }
76457 }
76458 break;
76459 case 6:
76460 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 200);
76461 if (Main.rand.Next(3) == 0)
76462 {
76463 if (Main.rand.Next(2) == 0)
76464 {
76465 Main.npc[newNPC].SetDefaults(-44);
76466 }
76467 else
76468 {
76469 Main.npc[newNPC].SetDefaults(-45);
76470 }
76471 }
76472 break;
76473 }
76474 }
76475 }
76476 if (Main.player[k].ZoneGraveyard)
76477 {
76478 Main.npc[newNPC].target = k;
76479 }
76480 }
76481 }
76482 else if (flag17)
76483 {
76484 if (!flag5 && Main.rand.Next(50) == 0 && !Main.player[k].ZoneSnow)
76485 {
76486 newNPC = ((!Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 10, 1) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 10, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 95, 1)));
76487 }
76488 else if (Main.hardMode && Main.rand.Next(3) == 0)
76489 {
76490 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 140);
76491 }
76492 else if (Main.hardMode && Main.rand.Next(4) != 0)
76493 {
76494 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 141);
76495 }
76496 else if (Main.remixWorld)
76497 {
76498 if (num3 == 147 || num3 == 161 || num3 == 163 || num3 == 164 || num3 == 162 || Main.player[k].ZoneSnow)
76499 {
76500 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 147);
76501 }
76502 else
76503 {
76504 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 1);
76505 if (Main.rand.Next(3) == 0)
76506 {
76507 Main.npc[newNPC].SetDefaults(-9);
76508 }
76509 else
76510 {
76511 Main.npc[newNPC].SetDefaults(-8);
76512 }
76513 }
76514 }
76515 else if (num49 == 147 || num49 == 161 || Main.player[k].ZoneSnow)
76516 {
76517 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 147);
76518 }
76519 else
76520 {
76521 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 1);
76522 if (Main.rand.Next(5) == 0)
76523 {
76524 Main.npc[newNPC].SetDefaults(-9);
76525 }
76526 else if (Main.rand.Next(2) == 0)
76527 {
76528 Main.npc[newNPC].SetDefaults(1);
76529 }
76530 else
76531 {
76532 Main.npc[newNPC].SetDefaults(-8);
76533 }
76534 }
76535 }
76536 else if (num2 > Main.maxTilesY - 190)
76537 {
76538 newNPC = ((Main.remixWorld && (double)num > (double)Main.maxTilesX * 0.38 + 50.0 && (double)num < (double)Main.maxTilesX * 0.62) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 59) : ((Main.hardMode && !savedTaxCollector && Main.rand.Next(20) == 0 && !AnyNPCs(534)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 534) : ((Main.rand.Next(8) == 0) ? SpawnNPC_SpawnLavaBaitCritters(num, num2) : ((Main.rand.Next(40) == 0 && !AnyNPCs(39)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 39, 1) : ((Main.rand.Next(14) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 24) : ((Main.rand.Next(7) == 0) ? ((Main.rand.Next(10) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 66) : ((!Main.hardMode || !downedMechBossAny || Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 62) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 156))) : ((Main.rand.Next(3) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 59) : ((!Main.hardMode || !downedMechBossAny || Main.rand.Next(5) == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 60) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 151)))))))));
76539 }
76540 else if (SpawnNPC_CheckToSpawnRockGolem(num, num2, k, num49))
76541 {
76542 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 631);
76543 }
76544 else if (Main.rand.Next(60) == 0)
76545 {
76546 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 217) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 218));
76547 }
76548 else if ((num49 == 116 || num49 == 117 || num49 == 164) && Main.hardMode && !flag5 && Main.rand.Next(8) == 0)
76549 {
76550 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 120);
76551 }
76552 else if ((num3 == 147 || num3 == 161 || num3 == 162 || num3 == 163 || num3 == 164 || num3 == 200) && !flag5 && Main.hardMode && Main.player[k].ZoneCorrupt && Main.rand.Next(30) == 0)
76553 {
76554 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 170);
76555 }
76556 else if ((num3 == 147 || num3 == 161 || num3 == 162 || num3 == 163 || num3 == 164 || num3 == 200) && !flag5 && Main.hardMode && Main.player[k].ZoneHallow && Main.rand.Next(30) == 0)
76557 {
76558 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 171);
76559 }
76560 else if ((num3 == 147 || num3 == 161 || num3 == 162 || num3 == 163 || num3 == 164 || num3 == 200) && !flag5 && Main.hardMode && Main.player[k].ZoneCrimson && Main.rand.Next(30) == 0)
76561 {
76562 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 180);
76563 }
76564 else if (Main.hardMode && Main.player[k].ZoneSnow && Main.rand.Next(10) == 0)
76565 {
76566 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 154);
76567 }
76568 else if (!flag5 && Main.rand.Next(100) == 0 && !Main.player[k].ZoneHallow)
76569 {
76570 newNPC = (Main.hardMode ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 95, 1) : ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 10, 1) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 185)));
76571 }
76572 else if (Main.player[k].ZoneSnow && Main.rand.Next(20) == 0)
76573 {
76574 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 185);
76575 }
76576 else if ((!Main.hardMode && Main.rand.Next(10) == 0) || (Main.hardMode && Main.rand.Next(20) == 0))
76577 {
76578 if (Main.player[k].ZoneSnow)
76579 {
76580 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 184);
76581 }
76582 else if (Main.rand.Next(3) == 0)
76583 {
76584 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 1);
76585 Main.npc[newNPC].SetDefaults(-6);
76586 }
76587 else
76588 {
76589 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 16);
76590 }
76591 }
76592 else if (!Main.hardMode && Main.rand.Next(4) == 0)
76593 {
76594 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 1);
76595 if (Main.player[k].ZoneJungle)
76596 {
76597 Main.npc[newNPC].SetDefaults(-10);
76598 }
76599 else if (Main.player[k].ZoneSnow)
76600 {
76601 Main.npc[newNPC].SetDefaults(184);
76602 }
76603 else
76604 {
76605 Main.npc[newNPC].SetDefaults(-6);
76606 }
76607 }
76608 else if (Main.rand.Next(2) != 0)
76609 {
76610 newNPC = ((Main.hardMode && (Main.player[k].ZoneHallow & (Main.rand.Next(2) == 0))) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 138) : (Main.player[k].ZoneJungle ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 51) : ((Main.player[k].ZoneGlowshroom && (num3 == 70 || num3 == 190)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 634) : ((Main.hardMode && Main.player[k].ZoneHallow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 137) : ((Main.hardMode && Main.rand.Next(6) > 0) ? ((Main.rand.Next(3) != 0 || (num3 != 147 && num3 != 161 && num3 != 162)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 93) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 150)) : ((num3 != 147 && num3 != 161 && num3 != 162) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 49) : ((!Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 150) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 169))))))));
76611 }
76612 else if (Main.rand.Next(35) == 0 && CountNPCS(453) == 0)
76613 {
76614 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 453);
76615 }
76616 else if (Main.rand.Next(80) == 0)
76617 {
76618 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 195);
76619 }
76620 else if (Main.hardMode && (Main.remixWorld || (double)num2 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && Main.rand.Next(200) == 0)
76621 {
76622 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 172);
76623 }
76624 else if ((Main.remixWorld || (double)num2 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && (Main.rand.Next(200) == 0 || (Main.rand.Next(50) == 0 && (Main.player[k].armor[1].type == 4256 || (Main.player[k].armor[1].type >= 1282 && Main.player[k].armor[1].type <= 1287)) && Main.player[k].armor[0].type != 238)))
76625 {
76626 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 45);
76627 }
76628 else if (flag10 && Main.rand.Next(4) != 0)
76629 {
76630 newNPC = ((Main.rand.Next(6) == 0 || AnyNPCs(480) || !Main.hardMode) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 481) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 480));
76631 }
76632 else if (flag9 && Main.rand.Next(5) != 0)
76633 {
76634 newNPC = ((Main.rand.Next(6) == 0 || AnyNPCs(483)) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 482) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 483));
76635 }
76636 else if (Main.hardMode && Main.rand.Next(10) != 0)
76637 {
76638 if (Main.rand.Next(2) != 0)
76639 {
76640 newNPC = ((!Main.player[k].ZoneSnow) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 110) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 206));
76641 }
76642 else if (Main.player[k].ZoneSnow)
76643 {
76644 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 197);
76645 }
76646 else
76647 {
76648 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 77);
76649 if ((Main.remixWorld || (double)num2 > (Main.rockLayer + (double)Main.maxTilesY) / 2.0) && Main.rand.Next(5) == 0)
76650 {
76651 Main.npc[newNPC].SetDefaults(-15);
76652 }
76653 }
76654 }
76655 else if (!flag5 && (Main.halloween || Main.player[k].ZoneGraveyard) && Main.rand.Next(30) == 0)
76656 {
76657 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 316);
76658 }
76659 else if (Main.rand.Next(20) == 0)
76660 {
76661 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 44);
76662 }
76663 else if (num3 == 147 || num3 == 161 || num3 == 162)
76664 {
76665 newNPC = ((Main.rand.Next(15) != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 167) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 185));
76666 }
76667 else if (Main.player[k].ZoneSnow)
76668 {
76669 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 185);
76670 }
76671 else if (Main.rand.Next(3) == 0)
76672 {
76673 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, cavernMonsterType[Main.rand.Next(2), Main.rand.Next(3)]);
76674 }
76675 else if (Main.player[k].ZoneGlowshroom && (num3 == 70 || num3 == 190))
76676 {
76677 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 635);
76678 }
76679 else if (Main.halloween && Main.rand.Next(2) == 0)
76680 {
76681 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, Main.rand.Next(322, 325));
76682 }
76683 else if (Main.expertMode && Main.rand.Next(3) == 0)
76684 {
76685 int num111 = Main.rand.Next(4);
76686 newNPC = ((num111 == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 449) : ((num111 == 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 450) : ((num111 != 0) ? NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 452) : NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 451))));
76687 }
76688 else
76689 {
76690 switch (Main.rand.Next(4))
76691 {
76692 case 0:
76693 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 21);
76694 if (Main.rand.Next(3) == 0)
76695 {
76696 if (Main.rand.Next(2) == 0)
76697 {
76698 Main.npc[newNPC].SetDefaults(-47);
76699 }
76700 else
76701 {
76702 Main.npc[newNPC].SetDefaults(-46);
76703 }
76704 }
76705 break;
76706 case 1:
76707 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 201);
76708 if (Main.rand.Next(3) == 0)
76709 {
76710 if (Main.rand.Next(2) == 0)
76711 {
76712 Main.npc[newNPC].SetDefaults(-49);
76713 }
76714 else
76715 {
76716 Main.npc[newNPC].SetDefaults(-48);
76717 }
76718 }
76719 break;
76720 case 2:
76721 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 202);
76722 if (Main.rand.Next(3) == 0)
76723 {
76724 if (Main.rand.Next(2) == 0)
76725 {
76726 Main.npc[newNPC].SetDefaults(-51);
76727 }
76728 else
76729 {
76730 Main.npc[newNPC].SetDefaults(-50);
76731 }
76732 }
76733 break;
76734 case 3:
76735 newNPC = NewNPC(GetSpawnSourceForNaturalSpawn(), num * 16 + 8, num2 * 16, 203);
76736 if (Main.rand.Next(3) == 0)
76737 {
76738 if (Main.rand.Next(2) == 0)
76739 {
76740 Main.npc[newNPC].SetDefaults(-53);
76741 }
76742 else
76743 {
76744 Main.npc[newNPC].SetDefaults(-52);
76745 }
76746 }
76747 break;
76748 }
76749 }
76750 if (Main.npc[newNPC].type == 1 && Main.player[k].RollLuck(180) == 0)
76751 {
76752 Main.npc[newNPC].SetDefaults(-4);
76753 }
76754 if (Main.tenthAnniversaryWorld && Main.npc[newNPC].type == 1 && Main.player[k].RollLuck(180) == 0)
76755 {
76756 Main.npc[newNPC].SetDefaults(667);
76757 }
76758 if (Main.netMode == 2 && newNPC < 200)
76759 {
76760 NetMessage.SendData(23, -1, -1, null, newNPC);
76761 }
76762 break;
76763 }
76764 }
static double Abs(double value)
static void SpawnNPC(ref int newNPC)
Definition DD2Event.cs:167
static bool[] Crimson
Definition TileID.cs:249
static bool[] Corrupt
Definition TileID.cs:235
static bool[] Hallow
Definition TileID.cs:241
static bool[] AllowsUndergroundDesertEnemiesToSpawn
Definition WallID.cs:38
static void SpawnNPC_SpawnFrog(int spawnTileX, int spawnTileY, int plr)
Definition NPC.cs:76766
static CoinLossRevengeSystem RevengeManager
Definition NPC.cs:439
static bool savedAngler
Definition NPC.cs:293
static bool noSpawnCycle
Definition NPC.cs:199
static int CountNPCS(int Type)
Definition NPC.cs:86664
static int stinkBugChance
Definition NPC.cs:147
static int spawnRangeY
Definition NPC.cs:183
static void ResetRemixHax()
Definition NPC.cs:72554
static bool downedMechBoss2
Definition NPC.cs:425
static int goldCritterChance
Definition NPC.cs:69
static bool unlockedSlimePurpleSpawn
Definition NPC.cs:313
static bool NearSpikeBall(int x, int y)
Definition NPC.cs:86713
static bool savedTaxCollector
Definition NPC.cs:285
static int MoonLordFightingDistance
Definition NPC.cs:49
static int waveNumber
Definition NPC.cs:77
static bool savedGolfer
Definition NPC.cs:299
static int SpawnNPC_SpawnLavaBaitCritters(int spawnTileX, int spawnTileY)
Definition NPC.cs:76889
static int butterflyChance
Definition NPC.cs:145
static int safeRangeY
Definition NPC.cs:187
static bool savedMech
Definition NPC.cs:291
static readonly int AFKTimeNeededForNoWorms
Definition NPC.cs:95
static int spawnSpaceX
Definition NPC.cs:121
static bool downedMechBossAny
Definition NPC.cs:421
static int[,] cavernMonsterType
Definition NPC.cs:579
static bool savedWizard
Definition NPC.cs:289
static bool downedBoss1
Definition NPC.cs:345
static int fireFlyChance
Definition NPC.cs:141
static int spawnRangeX
Definition NPC.cs:181
static bool savedGoblin
Definition NPC.cs:287
static int SpawnNPC_TryFindingProperGroundTileType(int spawnTileType, int x, int y)
Definition NPC.cs:76918
static int defaultSpawnRate
Definition NPC.cs:203
static int sWidth
Definition NPC.cs:177
static int maxSpawns
Definition NPC.cs:435
static bool FindCattailTop(int landX, int landY, out int cattailX, out int cattailY)
Definition NPC.cs:76951
static bool downedMechBoss3
Definition NPC.cs:427
static void SlimeRainSpawns(int plr)
Definition NPC.cs:72410
static bool AnyDanger(bool quickBossNPCCheck=false, bool ignorePillarsAndMoonlordCountdown=false)
Definition NPC.cs:77014
static int spawnRate
Definition NPC.cs:433
static bool AnyNPCs(int Type)
Definition NPC.cs:86689
static int SpawnNPC_GetGemBunnyToSpawn()
Definition NPC.cs:76782
static bool SpawnNPC_CheckToSpawnUndergroundFairy(int spawnTileX, int spawnTileY, int plr)
Definition NPC.cs:76859
static int safeRangeX
Definition NPC.cs:185
static int RollDragonflyType(int tileType=2)
Definition NPC.cs:72545
static bool unlockedSlimeOldSpawn
Definition NPC.cs:311
static bool downedGoblins
Definition NPC.cs:355
static bool Spawning_SandstoneCheck(int x, int y)
Definition NPC.cs:72483
static int NewNPC(IEntitySource source, int X, int Y, int Type, int Start=0, float ai0=0f, float ai1=0f, float ai2=0f, float ai3=0f, int Target=255)
Definition NPC.cs:77654
static void SpawnOnPlayer(int plr, int Type)
Definition NPC.cs:77311
static int spawnSpaceY
Definition NPC.cs:123
static int fireFlyFriendly
Definition NPC.cs:139
static bool downedGolemBoss
Definition NPC.cs:365
static bool downedMartians
Definition NPC.cs:367
static bool downedBoss3
Definition NPC.cs:349
static int SpawnNPC_GetGemSquirrelToSpawn()
Definition NPC.cs:76812
static bool downedPlantBoss
Definition NPC.cs:363
static bool savedBartender
Definition NPC.cs:297
static bool TooWindyForButterflies
Definition NPC.cs:850
static int defaultMaxSpawns
Definition NPC.cs:205
static IEntitySource GetSpawnSourceForNaturalSpawn()
Definition NPC.cs:87536
static bool SpawnTileOrAboveHasAnyWallInSet(int x, int y, bool[] wallTypes)
Definition NPC.cs:72568
static bool downedMechBoss1
Definition NPC.cs:423
static bool SpawnNPC_CheckToSpawnRockGolem(int spawnTileX, int spawnTileY, int plr, int tileType)
Definition NPC.cs:76842
static int fireFlyMultiple
Definition NPC.cs:143
static bool savedStylist
Definition NPC.cs:295
static int sHeight
Definition NPC.cs:179

References System.Math.Abs(), Terraria.ID.WallID.Sets.AllowsUndergroundDesertEnemiesToSpawn, Terraria.WorldGen.beachDistance, Terraria.Main.bloodMoon, Terraria.GameContent.CoinLossRevengeSystem.CheckRespawns(), Terraria.WorldGen.checkUnderground(), Terraria.Main.cloudAlpha, Terraria.Main.cloudBGActive, Terraria.ID.TileID.Sets.Corrupt, Terraria.ID.TileID.Sets.Crimson, Terraria.Main.dayTime, Terraria.Main.dontStarveWorld, Terraria.Main.drunkWorld, Terraria.Main.dungeonY, Terraria.Main.eclipse, Terraria.Main.expertMode, Terraria.Main.GameModeInfo, Terraria.Main.getGoodWorld, Terraria.ID.TileID.Sets.Hallow, Terraria.Main.halloween, Terraria.GameContent.Events.Sandstorm.Happening, Terraria.Main.hardMode, Terraria.GameContent.Creative.CreativePowerManager.Instance, Terraria.Main.invasionDelay, Terraria.Main.invasionSize, Terraria.Main.invasionSizeStart, Terraria.Main.invasionType, Terraria.Main.invasionX, Terraria.Main.IsItAHappyWindyDay, System.list, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.moonPhase, Terraria.Main.netMode, Terraria.Main.npc, Terraria.Main.numClouds, Terraria.WorldGen.oceanDepths(), Terraria.WorldGen.oceanDistance, Terraria.GameContent.Events.DD2Event.Ongoing, Terraria.GameContent.Events.BirthdayParty.PartyIsUp, Terraria.Main.player, Microsoft.Xna.Framework.Graphics.Point, Terraria.Main.pumpkinMoon, Terraria.Main.raining, Terraria.Main.rand, Terraria.GameContent.Events.DD2Event.ReadyToFindBartender, Terraria.Main.remixWorld, Terraria.Main.rockLayer, Terraria.ID.TileID.Sets.Conversion.Sand, Terraria.NetMessage.SendData(), Terraria.WorldGen.shadowOrbSmashed, Terraria.Main.slimeRain, Terraria.Main.snowMoon, Terraria.WorldGen.SolidTile(), Terraria.Collision.SolidTiles(), Terraria.GameContent.Events.DD2Event.SpawnNPC(), Terraria.Main.spawnTileX, Terraria.Star.starfallBoost, Terraria.Main.tenthAnniversaryWorld, Terraria.Main.tile, Terraria.Main.tileDungeon, Terraria.Main.tileSand, Terraria.Main.tileSolid, Terraria.Main.time, Terraria.Main.UnderworldLayer, Terraria.Main.wallHouse, Terraria.Main.wallLight, Terraria.Main.windSpeedTarget, Terraria.Main.wofNPCIndex, Terraria.Main.worldSurface, and Terraria.Main.xMas.

Referenced by Terraria.Main.DoUpdateInWorld().